繁体   English   中英

寻找Spark DStream到Parquet文件的性能提示

[英]Looking for performance tips on Spark DStream to Parquet files

我想将Elasticsearch索引存储到不使用ES-Hadoop Connector的HDFS文件中。 建议的解决方案是使用流式自定义接收器来读取和保存为镶木地板文件,代码如下,

JavaDStream<String> jsonDocs = ssc.union(dsList.get(0), dsList.subList(1, dsList.size())); // I have a couple receivers
jsonDocs.foreachRDD( rdd -> {
    Dataset<Row> ds = spark.read().json(spark.createDataset(rdd.rdd(), Encoders.STRING()));
    ds.write().mode(SaveMode.Append).option("compression","gzip").parquet(path); 

有了这个,我得到了一些好的性能数字,但是,因为我是Spark的新手,我想知道是否有任何改进空间。 例如,我看到json()和parquet()作业占用大部分时间,并且json()作业需要很长时间才能完成或者可以避免吗? (为简单起见,我在代码片段中省略了一些其他工作,例如count()。)

使用结构化流式传输看起来很不错,但是没有找到使用自定义接收器流式传输的简单解决方案。 提前致谢,

spark.read().json(spark.createDataset(rdd.rdd(), Encoders.STRING()));

综上所述,阅读json()可能不是最适合性能敏感的工作。 Spark在其数据源api中使用JacksonParser来读取json。 如果您的json结构很简单,请尝试使用map()函数自行解析它来创建Row。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM