【问题标题】:Save Spark RDD to Hive Table将 Spark RDD 保存到 Hive 表
【发布时间】:2016-05-05 12:38:16
【问题描述】:

在 Spark 中,我想将 RDD 对象保存到配置单元表中。我正在尝试使用 createDataFrame 但这是在抛出

线程“main”中的异常 java.lang.NullPointerException

 val products=sc.parallelize(evaluatedProducts.toList);
 //here products are RDD[Product]
 val productdf = hiveContext.createDataFrame(products, classOf[Product])

我使用的是 Spark 1.5 版本。

【问题讨论】:

    标签: hadoop apache-spark apache-spark-sql


    【解决方案1】:

    如果您的 Product 是一个类(不是案例类),我建议您在创建 DataFrame 之前将您的 rdd 转换为 RDD[Tuple]:

    import org.apache.spark.sql.hive.HiveContext
    
    val hiveContext = new HiveContext(sc)
    import hiveContext.implicits._
    
    val productDF = products
      .map({p: Product => (p.getVal1, p.getVal2, ...)})
      .toDF("col1", "col2", ...)
    

    使用这种方法,您将在 DataFrame 中将 Product 属性作为列。

    然后你可以创建一个临时表:

    productDF.registerTempTable("table_name")
    

    或带有以下内容的物理表:

    productDF.write.saveAsTable("table_name")
    

    【讨论】:

    • 谢谢丹尼尔。我按照您的建议尝试了,但它返回错误,因为“值 toDF 不是 org.apache.spark.rdd.RDD 的成员”val productdf= products.map({ p =>(p.getcol1(), p.getCol2(),p.isValide())}).toDF("col1", "col2","col3");
    • 哦,我忘了,你应该打电话给import hiveContext.implicits._我要把它添加到答案中。
    • 按照您的建议完成,但它说 hiveContext.implicits._ 未找到。我是否需要将任何 jar 添加到 pom 文件中已经存在以下依赖项? <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.10</artifactId> <version>1.2.1</version> </dependency>
    • 我认为如果你更新你的 spark-hive 以匹配你的 spark 版本就足够了:<artifactId>spark-hive_2.10</artifactId> <version>1.5.1</version>。理想情况下,spark-hive 应该始终与您的 Spark 版本匹配。如果还不够,也可以尝试添加 spark-sql 包
    • 更新版本如下所述,但问题相同。 ` 错误:未找到:对象 hiveContext [错误] 导入 hiveContext.implicits._ `<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.10</artifactId> <version>1.5.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.10</artifactId> <version>1.5.2</version> </dependency>
    猜你喜欢
    • 2016-01-30
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多