Java Spark remake HIVE view to INSERT



我有以下Java代码,它从HDFS读取JSON文件,并使用Spark将其输出为HIVE视图。

package org.apache.spark.examples.sql.hive;
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.spark.api.java.function.MapFunction;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Encoders;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
// $example off:spark_hive$
public class JavaSparkHiveExample {
  public static void main(String[] args) {
    // $example on:spark_hive$
    SparkSession spark = SparkSession
      .builder()
      .appName("Java Spark Hive Example")
            .master("local[*]")
            .config("hive.metastore.uris", "thrift://localhost:9083")
      .enableHiveSupport()
      .getOrCreate();
    Dataset<Row> jsonTest = spark.read().json("/tmp/testJSON.json");
    jsonTest.createOrReplaceTempView("jsonTest");
    Dataset<Row> showAll = spark.sql("SELECT * FROM jsonTest");
    showAll.show();
    spark.stop();
  }
}

我很难将视图重新制作为 INSERT 语句,以便将 JSON 插入表 test1(例如(。

非常感谢帮助!

如果要保存到Hive表,可以

showAll.write().saveAsTable("tableName") 

如果要将本地文件读取到执行程序,请使用 file:// 作为文件路径的前缀。注意,Spark是一个分布式进程,所以所有的执行器都需要能够在同一位置读取文件,这就是为什么HDFS通常与Spark一起使用的原因

相关内容

最新更新