相关疑难解决方法(0)

Spark甚至在分区数据中列出所有叶节点

我有date&hour,文件夹结构分区的镶木地板数据:

events_v3
  -- event_date=2015-01-01
    -- event_hour=2015-01-1
      -- part10000.parquet.gz
  -- event_date=2015-01-02
    -- event_hour=5
      -- part10000.parquet.gz
Run Code Online (Sandbox Code Playgroud)

我已经raw_events通过spark 创建了一个表,但是当我尝试查询时,它会扫描所有目录的页脚,这会减慢初始查询,即使我只查询一天的数据.

查询: select * from raw_events where event_date='2016-01-01'

类似的问题:http://mail-archives.apache.org/mod_mbox/spark-user/201508.mbox/%3CCAAswR-7Qbd2tdLSsO76zyw9tvs-Njw2YVd36bRfCG3DKZrH0tw@mail.gmail.com%3E(但它的旧版本)

日志:

App > 16/09/15 03:14:03 main INFO HadoopFsRelation: Listing leaf files and directories in parallel under: s3a://bucket/events_v3/
Run Code Online (Sandbox Code Playgroud)

然后它产生350个任务,因为有350天的数据.

我已经禁用了schemaMerge,并且还指定了架构来读取,因此它可以转到我正在查看的分区,为什么要打印所有叶子文件?列出具有2个执行程序的叶子文件需要10分钟,查询实际执行需要20秒

代码示例:

val sparkSession = org.apache.spark.sql.SparkSession.builder.getOrCreate()
val df = sparkSession.read.option("mergeSchema","false").format("parquet").load("s3a://bucket/events_v3")
    df.createOrReplaceTempView("temp_events")
    sparkSession.sql(
      """
        |select verb,count(*) from temp_events where event_date = "2016-01-01" group by verb
      """.stripMargin).show()
Run Code Online (Sandbox Code Playgroud)

partitioning amazon-s3 apache-spark parquet apache-spark-sql

15
推荐指数
2
解决办法
5864
查看次数

在Spark中禁用镶木地板元数据摘要

我有一个火花工作(1.4.1)接收卡夫卡事件流.我想在tachyon上不断保存它们作为镶木地板.

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')")
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,我发现随着时间的推移,每次镶木地板上都会产生火花,每1秒的镶木地板部件会产生火花,速度越来越慢

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, …
Run Code Online (Sandbox Code Playgroud)

apache-spark parquet

7
推荐指数
2
解决办法
1万
查看次数