0

scala を使用して spark でデータソースを作成します。ケースクラスがあり、RDD を作成してテーブルとして登録しました。スパークのドキュメントに示されている例と同じです。

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.createSchemaRDD
case class Person(name: String, age: Int)
val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt))
people.registerAsTable("people")
val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
teenagers.map(t => "Name: " + t(0)).collect().foreach(println)

ただし、Hive、impala、または spark-sql でテーブルにアクセスできません。「テーブルを表示」コマンドはテーブルを表示しません。これを達成する方法についてのアイデアはありますか?

ありがとうございました!

4

1 に答える 1

2

ローカルに作成したテーブルとハイブ メタストアの間に接続はありません。

ハイブを介してテーブルにアクセスするには、寄木細工のファイルを何らかの方法で生成し (コードは問題ありません)、それらをハイブ メタストアに追加し ( をcreate table ...使用)、次にハイブ接続を介して使用するか、ハイブ コンテキストを作成します ( org.apache.spark.sql.hive.HiveContext) 。

registerTempTableつまり、ローカルで使用されるメタデータ (で作成) と永続的なハイブ メタデータ (メタストアに格納される)を区別する必要があります。

于 2014-11-03T03:20:52.127 に答える