Spark从Avro转换为Parquet Java

时间:2018-10-14 02:50:56

标签: apache-spark-sql

我正在尝试使用spark将已生成的avro文件转换为镶木地板。

以下是我尝试过的一些选项: 将avro文件读取到spark sql上下文中->写入临时表->将所有记录读取到数据帧中并写入镶木地板文件。

以下代码:

import {circle, icon, latLng, marker, polygon, tileLayer} from 'leaflet';

...

ngOnInit() {
    const myFilter = [
      'grayscale:100%',
      'invert:100%',
    ];

    this.options = {
      layers: [
        tileLayer.colorFilter(
          'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
          { maxZoom: 18, attribution: '...' },
          myFilter
        )
      ],
      zoom: 5,
      center: latLng(46.879966, -121.726909)
};

第二,我尝试将其复制到RDD,然后尝试写入文件。 在这两种情况下,我都有相同的错误。

    Dataset<Row> df = sqlContext.read().format("com.databricks.spark.avro")
              .load(inputDirectory);
    df.show();
    df.printSchema();
    df.createOrReplaceTempView("tempview");
    StructType schema = df.schema();
    JavaRDD rdd = df.toJavaRDD();
    Dataset<Row> sqlDF = sqlContext.createDataFrame(rdd, schema);
    String fileName = "parquet_files";
    //Dataset<Row> sqlDF = spark.sql("SELECT * FROM tempview");
    sqlDF.show();
    sqlDF.schema();
    sqlDF.write()
    .mode(SaveMode.Overwrite)
    .parquet(fileName);

有什么想法吗?

0 个答案:

没有答案