【问题标题】:Writing Parquet files with Scala for spark without spark as dependency使用 Scala 为 spark 编写 Parquet 文件,而不需要 spark 作为依赖项
【发布时间】:2019-03-04 15:11:18
【问题描述】:

我想将我的收藏写入 .parquet 文件,以便以后可以使用 Spark 读取。

到目前为止,我正在使用以下代码创建文件:

package com.contrib.parquet

import org.apache.avro.SchemaBuilder
import org.apache.avro.reflect.ReflectData
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.parquet.avro.AvroParquetWriter
import org.apache.parquet.hadoop.{ParquetFileWriter, ParquetWriter}
import org.apache.parquet.hadoop.metadata.CompressionCodecName

object ParquetWriter {
  def main(args: Array[String]): Unit = {

    val schema = SchemaBuilder
      .record("Record")
      .fields()
      .requiredString("name")
      .requiredInt("id")
      .endRecord()

    val writer: ParquetWriter[Record] = AvroParquetWriter
      .builder(new Path("/tmp/parquetResult"))
      .withConf(new Configuration)
      .withDataModel(ReflectData.get)
      .withCompressionCodec(CompressionCodecName.SNAPPY)
      .withSchema(schema)
      .withWriteMode(ParquetFileWriter.Mode.OVERWRITE)
      .build()

    Seq(Record("nameOne", 1), Record("nameTwo", 2)).foreach(writer.write)
    writer.close()
  }

  case class Record(name: String, id: Int)
}

成功创建了 parquet 文件。 当我尝试使用 spark 读取该文件时,我收到 java.lang.NoSuchMethodError: org.apache.parquet.column.values.ValuesReader.initFromPage 错误。

火花代码:

val master = "local[4]"
val sparkCtx = SparkSession
  .builder()
  .appName("ParquetReader")
  .master(master)
  .getOrCreate()

val schema = Encoders.product[Record].schema
val df = sparkCtx.read.parquet("/tmp/parquetResult")
df.show(100, false)

如何编写 Parquet 文件以便使用 Spark 读取它们?我不想让本地 Spark 应用程序仅仅为了写这个文件。

【问题讨论】:

  • 这个运气好吗?
  • @Explorer 还没有,一有答案就会更新。

标签: scala apache-spark parquet


【解决方案1】:

我们最终使用了开源库:https://github.com/mjakubowski84/parquet4s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2021-07-24
    • 2019-02-24
    • 2017-10-26
    • 2020-01-05
    • 2023-03-17
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多