如何使用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)。有什么改进吗?
答案 0 :(得分:0)
如果有人感兴趣,我设法使用.pipe()方法解决了这个问题。
https://spark.apache.org/docs/latest/api/python/pyspark.html?highlight=pipe#pyspark.RDD.pipe