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

Spark: Streaming json to parquet

如何使用 Spark 将 json 转换为 parquet? Acutually 我必须从服务器 ssh,接收一个大 json 文件,将其转换为 parquet,然后将其上传到 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 列 280kb json)。有什么改进吗?

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

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