我在hadoop文件系统hdfs上有一个CSV,我希望使用这个框架将其转换为多个序列化的java对象:
https://github.com/clarkduvall/serpy
我听说过avro和镶木地板。我不想使用它们并希望输出序列化的二进制文件。我的csv文件包含以下记录:
Name, Age, Date
Jordan, 1, 1/1/2017
John, 5, 2/2/2017
这可能使用Hadoop或Spark吗?输出对象应该可以通过普通的非hadoop / spark相关Java程序读取。任何一个例子将不胜感激!
答案 0 :(得分:0)
输出对象应该可以被普通的非hadoop / spark相关的Java程序读取
为此,您需要将结果保存在HDFS之外。所以你能做的是:
示例代码:
val sc = new SparkContext(conf)
val myRdd = sc.textFile("hdfs://namenode/mypath/myfile.csv")
val myArray = myRdd.take(100000)
//Store myArray to file using java serialiser
如果要在HDFS上存储序列化数据,可以执行以下操作:
val sc = new SparkContext(conf)
val myRdd = sc.textFile("hdfs://namenode/mypath/myfile.csv")
myRdd.saveAsObjectFile("hdfs://namenode/mypath/myoutput.obj")
这将保存一个数组[String]。您可以在第2行和第3行之间转换RDD,以使其对
更有用