相关疑难解决方法(0)

使用Spark通过s3a将镶木地板文件写入s3非常慢

我正在尝试编写一个parquet文件来Amazon S3使用Spark 1.6.1.parquet我正在生成的小部分~2GB曾经被写过,所以数据并不多.我试图证明Spark我可以使用的平台.

基本上,我什么都正在建立一个star schemadataframes,那么我会写这些表出来拼花地板.数据来自供应商提供的csv文件,我使用Spark作为ETL平台.我现在有一个3节点集群中的ec2(r3.2xlarge)那么120GB的存储器上执行程序和16个内核总.

输入文件总共大约22GB,我现在提取大约2GB的数据.最后,当我开始加载完整数据集时,这将是几TB.

这是我的火花/斯卡拉pseudocode:

  def loadStage(): Unit = {
    sc.hadoopConfiguration.set("fs.s3a.buffer.dir", "/tmp/tempData")
    sc.hadoopConfiguration.set("spark.sql.parquet.output.committer.class","org.apache.spark.sql.parquet.DirectParquetOutputCommitter")
    sc.hadoopConfiguration.set("spark.sql.hive.convertMetastoreParquet","false")
    var sqlCtx = new SQLContext(sc)


    val DataFile = sc.textFile("s3a://my-bucket/archive/*/file*.gz")

    //Setup header table/df
    val header_rec = DataFile.map(_.split("\\|")).filter(x=> x(0) == "1")
    val headerSchemaDef = "market_no,rel_date,field1, field2, field3....."
    val headerSchema = StructType(headerSchemaDef.split(",").map(fieldName => StructField(fieldName, StringType,false)))
    val headerRecords = header_rec.map(p => Row(p(3), p(8), p(1), …
Run Code Online (Sandbox Code Playgroud)

scala amazon-s3 apache-spark parquet apache-spark-sql

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

对分区数据进行Spark SQL查询

我已经设置了一个收集事件数据的Spark 1.3.1应用程序.其中一个属性是名为'occurrence'的时间戳.我打算将事件数据划分为文件存储区中的镶木地板文件,并根据文档(https://spark.apache.org/docs/1.3.1/sql-programming-guide.html#partition-discovery)表示基于时间的值不仅仅支持string和int,所以我将日期分为Year,Month,Day值并按如下方式分区

events
  |---occurredAtYear=2015
  |   |---occurredAtMonth=07
  |   |   |---occurredAtDay=16
  |   |   |   |---<parquet-files>
  ...
Run Code Online (Sandbox Code Playgroud)

然后我从根路径/事件加载镶木地板文件

sqlContext.parquetFile('/var/tmp/events')
Run Code Online (Sandbox Code Playgroud)

文件说:

'Spark SQL将自动从路径中提取分区信息'

但是我的查询

SELECT * FROM events where occurredAtYear=2015
Run Code Online (Sandbox Code Playgroud)

悲惨地说火花无法解决'happenAtYear'

我可以看到事件的所有其他方面的模式,并可以对这些属性进行查询,但printSchema根本没有列出schemaAtYear/Month/Day?我错过了让分区正常工作的原因.

干杯

apache-spark

1
推荐指数
1
解决办法
2037
查看次数