首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spark中禁用拼图仪元数据摘要

在Spark中禁用拼图仪元数据摘要
EN

Stack Overflow用户
提问于 2015-08-23 05:24:22
回答 2查看 17.3K关注 0票数 9

我有一个spark作业(用于1.4.1)接收kafka事件流。我想继续保存它们作为超光速粒子上的拼花。

代码语言:javascript
复制
val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)

lines.window(Seconds(1), Seconds(1)).foreachRDD { (rdd, time) =>
  if (rdd.count() > 0) {
    val mil = time.floor(Duration(86400000)).milliseconds
    hiveContext.read.json(rdd).toDF().write.mode(SaveMode.Append).parquet(s"tachyon://192.168.1.12:19998/persisted5$mil")
    hiveContext.sql(s"CREATE TABLE IF NOT EXISTS persisted5$mil USING org.apache.spark.sql.parquet OPTIONS ( path 'tachyon://192.168.1.12:19998/persisted5$mil')")
  }
}

然而,我看到随着时间的推移,在每一次实木地板的书写中,火花通过每1秒的实木地板部分,这变得越来越慢。

代码语言:javascript
复制
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-db03b24d-6f98-4b5d-bb40-530f35b82633.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-3a7857e2-0435-4ee0-ab2c-6d40224f8842.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-47ff2ac1-da00-4473-b3f7-52640014bc5b.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-61625436-7353-4b1e-bb8d-e8afad3a582e.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-e711aa9a-9bf5-41d5-8523-f5edafa69626.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-4e0cca38-cf75-4771-8965-20a30c863100.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-d1510ed4-2c99-43e2-b3d1-38d3d54e626d.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-022d1918-392d-433f-a7f4-074e46b4460f.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-cf71f5d2-ba0e-4729-9aa1-41dad5d1d08f.gz.parquet, 65536)
15/08/22 22:04:05 INFO : open(tachyon://192.168.1.12:19998/persisted51440201600000/part-r-00000-ce990b1e-82cc-4feb-a162-ac3ddc275609.gz.parquet, 65536)

我得出的结论是,这是由于摘要数据的更新,我相信spark没有使用它们。所以我想禁用它

parquet sources显示我应该能够将"parquet.enable.summary-metadata“设置为false。

现在,在创建hiveContext之后,我尝试这样设置它

代码语言:javascript
复制
hiveContext.sparkContext.hadoopConfiguration.setBoolean("parquet.enable.summary-metadata", false)
hiveContext.sparkContext.hadoopConfiguration.setInt("parquet.metadata.read.parallelism", 10) 

但是如果没有成功,我仍然会得到显示并行度为5(默认)的日志。

用parquet禁用spark中的汇总数据的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-23 14:51:15

将"parquet.enable.summary-metadata“设置为文本("false”,而不是false)似乎对我们有效。

顺便说一句,Spark确实使用了_common_metadata文件(对于重复性的工作,我们手动复制该文件)

票数 14
EN

Stack Overflow用户

发布于 2016-10-20 19:58:16

默认情况下,Spark 2.0不再保存元数据摘要,请参阅SPARK-15719

如果您正在使用托管在S3中的数据,您可能仍然会发现拼接面板本身试图扫描所有对象的尾部以检查其模式,从而影响镶嵌面板的性能。可以显式禁用的

代码语言:javascript
复制
sparkConf.set("spark.sql.parquet.mergeSchema", "false")
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32160926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档