快速将csv转为Spark Dataframe

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2016/03/14/csv-to-spark-dataframe/

CSV,或者叫逗号分隔值,是以逗号为分隔符,简单而使用。虽然并没有真正的标准,但是RFC 4180中有一个大致的表述。

很多时候我们拿到的原始数据都是csv的,而快速将其转为Spark的Dataframe做进一步分析就是一个经常遇到的问题。

先来一个简单的例子,这里以手淘的数据为例子

spark-dataframe-1

共有六列。

先建立一个简单对象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/

发表评论