本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/03/14/csv-to-spark-dataframe/
CSV,或者叫逗号分隔值,是以逗号为分隔符,简单而使用。虽然并没有真正的标准,但是RFC 4180中有一个大致的表述。
很多时候我们拿到的原始数据都是csv的,而快速将其转为Spark的Dataframe做进一步分析就是一个经常遇到的问题。
先来一个简单的例子,这里以手淘的数据为例子
共有六列。
先建立一个简单对象Record,然后直接用Spark的createDataFrame方法
JavaRDD<Record> list = sc.textFile(userFile).map(new Function<String, Record>() { @Override public Record call(String v1) throws Exception { String[] split = v1.split(","); return new Record(split[0], split[1], split[2], split[3], split[4], split[5]); } }); DataFrame dataFrame = sqlContext.createDataFrame(list, Record.class);
这样的操作有一些不方便的地方,第一个是需要创建一个额外的类,另外一个是缺乏数据类型自动推断。
databricks在Spark方面有相当的积累,也有一些对应的包,其中就包括了csv包。
compile 'com.databricks:spark-csv_2.11:1.4.0'
使用时直接指定format
DataFrame record = sqlContext.read().format("com.databricks.spark.csv").option("header", "true") .option("inferSchema", "true").load(userFile);
这包含了自动的header和类型推导。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/03/14/csv-to-spark-dataframe/