3

私はVectorタイプの列の1つを持つSpark DataFrameを持っています。 私はそれの上にハイブテーブルを作成するときに、私はテーブルの作成が動作してOKを返すように見えることがテーブル作成時のSpark Vectorに相当するハイブ

CREATE EXTERNAL TABLE mix (
     topicdist ARRAY<DOUBLE> 
    ) 
STORED AS PARQUET 
LOCATION 's3://path/to/file.parquet' 

に相当するタイプか分からないが、私は

select topicdist from mix limit 1 
をしようとすると、私が手

エラー:

Failed with exception java.io.IOException:java.lang.RuntimeException: Unknown hive type info array<double> when searching for field type 
+0

エラーメッセージはありますか?私はあなたが 'topicdist ARRAY ' – alejandrogiron

+1

の後に余分な昏睡状態を抱えていると思う。申し訳ありませんが、それはMCVEのちょうど問題でした。クエリ時に – DeanLa

+0

明確化して編集。 – DeanLa

答えて

2

Vectorがスパークユーザー定義型であり、それは内部

012として格納されています
StructType(Seq(
    StructField("type", ShortType, true), 
    StructField("size",IntegerType, true), 
    StructField("indices", ArrayType(IntegerType, true), true), 
    StructField("values",ArrayType(DoubleType, true), true) 
)) 

ますので、必要があります

CREATE EXTERNAL TABLE mix (
    topicdist struct<type:tinyint,size:int,indices:array<int>,values:array<double>> 
) 
STORED AS PARQUET 
LOCATION 's3://path/to/file.parquet' 

結果の列がスパークVectorに解釈されませんのでご注意ください。

関連する問題