0

SQL の結果でカウントを読み取ろうとすると、次のエラーが表示されます。

エラー:

Exception in thread "main" org.apache.spark.sql.catalyst.errors.package$TreeNodeException: Unresolved attributes

私が使用しているコードは次のとおりです。

val results= sqlContext.sql("select * from  tablename")
results.collect().foreach(println)

私は Spark 1.1.0 を使用しており、プログラムをローカルで実行しています。

4

2 に答える 2

0

この問題は、Spark 1.1 で、alter table コマンドを使用して列が追加されたパーティション化された Hive テーブルをクエリしている場合に発生する可能性があります。テーブル スキーマは新しい列を認識していますが、新しい列が追加される前に作成されたデータ パーティションのパーティション スキーマにはテーブルがありません。

Select * はテーブル スキーマから列のリストを取得しますが、古いデータ パーティションを処理するときに、列がパーティション スキーマに存在しないため、spark は列を見つけられず、この未解決の属性エラーをスローします。

これが直面している問題である場合は、select * を使用する代わりに、列名の明示的なリストを指定します。ただし、これは部分的な解決策にすぎません。古いパーティションに存在しない列名を明示的にリストすると、依然としてエラーが発生するためです。

于 2015-09-10T20:45:38.570 に答える