【问题标题】:How to get HiveContext from JavaSparkContext如何从 JavaSparkContext 获取 HiveContext
【发布时间】:2018-03-30 16:31:32
【问题描述】:

在一些 Spark 代码中,我看到程序员使用这样的代码来创建 SparkContext

 SparkSession session = SparkSession
      .builder()
      .appName("Spark Hive Example")
      .config("spark.sql.warehouse.dir", warehouseLocation)
      .enableHiveSupport()
      .getOrCreate();

但我一直使用这种代码来创建 JavaSparkContext。

SparkConf sparkConf = new SparkConf().setAppName("Simple App").setMaster("local");
JavaSparkContext spark = new JavaSparkContext(sparkConf);

从代码的后半部分,有什么方法可以让我获得 Hive 上下文来对 Hive 表执行操作?

谢谢!

【问题讨论】:

  • 同样使用 SparkSession,我不能使用 parallelize() 方法。有什么选择吗?我似乎不明白何时使用 SparkSession 和 JavaSparkContext。 Apache Spark 的 Java 编程指南根据需要使用两者。 spark.apache.org/docs/latest/rdd-programming-guide.html

标签: hadoop apache-spark hive hivecontext


【解决方案1】:

您使用的是 Spark 2.0 或更高版本,不再使用 SQLContextSparkSessionenableHiveSupport 是足够的替代品。

所以你所要做的就是session你已经拥有的实例。

【讨论】:

  • 谢谢!我目前正在使用 Spark 2.2.0 并且是新手。 JavaSparkContext 比 SparkSession 有优势吗?还是 JavaSparkContext 会在未来某个时候贬值?
【解决方案2】:

终于找到解决办法了。

SparkSession spark = SparkSession
                    .builder()
                    .appName("SampleApp")
                    .master("local")
                    .enableHiveSupport()
                    .getOrCreate();

JavaSparkContext jsc = new JavaSparkContext(spark.sparkContext());

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2023-03-16
    • 2016-04-03
    • 2018-01-09
    • 2016-07-11
    相关资源
    最近更新 更多