2016-09-06 5 views
0

配列データ型の列を持つHiveテーブルがあります。私は、テーブルから行を選択するためにJDBCを使用しています。結果セットを受信した後JDBCを使用してHiveテーブルから配列フィールドを選択します。

SELECT col1 FROM hive_table WHERE condition = 'condition' 

結果セットをループしながら、私は、特定のアレイフィールドのres.getArray()メソッドを使用しています。

Array arrayCol = res.getArray(1); 

これは「メソッドがサポートされていません」というエラーを投げています。 Hiveテーブルで実行されるクエリにgetArray()メソッドを使用するのは有効ですか?

答えて

0

残念ながら、 getArray()メソッドがHive JDBCのResultSetクラスに実装されていないことがわかります。実際のクラス名はHiveBaseResultSetで、ソースコードはhereです。

配列に保持されている値のタイプによって、クライアントプログラムは値を単独でデコードする必要があります。たとえば、配列<の文字列>の列は、[["VALUE1"、 "VALUE2"、...、 "VALUEN"] 'のような単一のStringオブジェクトとしてエンコードされます。また、getString()メソッドを使用して、配列<の文字列>またはリスト<の文字列>のオブジェクトを自由に再構築できます。

0

結果セットをループして、列値をjavaのarraylistに追加することができます。テーブルの列がString型であると仮定して、以下の例を参照してください。

List<String> list = new ArrayList<String>(); 

    while (res.next()) { 
         list.add(res.getString(1)); 
        } 
+0

あなたの返信は質問とは関係ありません。複数のレコードの値をリストに追加する方法を説明しましたが、配列データ型のgetArray()メソッドを使用するときにエラーが発生するのはなぜですか。 – mbgsuirp

関連する問題