孤独雪鹰 发表于 2019-1-30 13:40:35

Spark 数据导入时的类型检测相关问题

  Spark 可以读取文本,csv和rmdb中的数据,并且带有类型自动检测功能
  

  public final static String DATA_SEPARATOR_TAB = "\t";
  session.read().format("csv").option("delimiter", Constants.DATA_SEPARATOR_TAB).option("inferSchema", "true").option("header", "true").option("encoding", charset).csv(path).toDF(columnNames).write().mode(mode).saveAsTable(tempTable);
  

  红色属性决定spark是否自动探测数据类型,如果不开启自动探测,默认都是string
  rdbms导入到spark中默认会类型探测和对应,但是在处理sqlserver的时间类型有问题
  https://s1.运维网.com/wyfs02/M01/96/67/wKioL1khOy_jpf80AAA8Nr_A3tU901.png-wh_500x0-wm_3-wmp_4-s_2577005971.png
  

  

  如上图所示
  只有datetime可以被spark识别并存储为日期类型,其他的都落地成了String类型,所以在执行data_formate时因为要多做一步转换所以性能会差很多
  


  




页: [1]
查看完整版本: Spark 数据导入时的类型检测相关问题