복붙노트

[HADOOP] Spark RDD를 하이브 테이블에 저장하십시오.

HADOOP

Spark RDD를 하이브 테이블에 저장하십시오.

스파크에서는 RDD 객체를 하이브 테이블에 저장하려고합니다. createDataFrame을 사용하려고하는데 던지는 중입니다.

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

Spark 1.5 버전을 사용하고 있습니다.

해결법

  1. ==============================

    1.귀하의 제품이 클래스 (케이스 클래스가 아닌)라면 DataFrame을 생성하기 전에 rdd를 RDD [Tuple]로 변환하는 것이 좋습니다.

    귀하의 제품이 클래스 (케이스 클래스가 아닌)라면 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", ...)
    

    이 방법을 사용하면 Product 속성을 DataFrame의 열로 사용할 수 있습니다.

    그런 다음 다음을 사용하여 임시 테이블을 만들 수 있습니다.

    productDF.registerTempTable("table_name")
    

    또는 실제 테이블 :

    productDF.write.saveAsTable("table_name")
    
  2. from https://stackoverflow.com/questions/37050828/save-spark-rdd-to-hive-table by cc-by-sa and MIT license