Spark:将json流式传输到镶木地板

时间:2016-03-03 11:07:12

标签: json apache-spark parquet

如何使用Spark将json转换为镶木地板? 我必须从服务器ssh,收到一个大的json文件,将其转换为实木复合地板,并将其上传到hadoop。 我有办法以流水线方式做到这一点吗? 它们是备份文件,所以我有一个目录,其中预定义的文件数量不会随时间变化

类似的东西:

scp host /dev/stdout | spark-submit myprogram.py | hadoop /dir/

编辑: 其实我正在研究这个:

sc = SparkContext(appName="Test")
sqlContext = SQLContext(sc)
sqlContext.setConf("spark.sql.parquet.compression.codec.", "gzip")
#Since i couldn't get the stdio, went for a pipe:
with open("mypipe", "r") as o:
        while True:
                line = o.readline()
                print "Processing: " + line
                lineRDD = sc.parallelize([line])
                df = sqlContext.jsonRDD(lineRDD)
                #Create and append
                df.write.parquet("file:///home/user/spark/test", mode="append")
print "Done."

这样工作正常,但最终的镶木地板非常大(4行2列json为280kb)。有什么改进吗?

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,我设法使用.pipe()方法解决了这个问题。

https://spark.apache.org/docs/latest/api/python/pyspark.html?highlight=pipe#pyspark.RDD.pipe