0
私のテーブルはほとんどダブルタイプのカラムといくつかのストリングカラムを持っています。私は、行形式serde を使ってテーブルを作成しました。 私はまずnamed_struct関数を使ってこれらの列を結合し、それを私のudfに渡します。このようなもの。ハイブUdf、構造型は型情報を失います。とにかくタイプ情報を回復するには
select id, my_udf(named_struct("key1", col1, "key2", col2, "key3",col3, "key4", col4), other_udf_param1, other_udf_param2);
ので、COL1、COL2とCOL3は、double型のものであり、COL4はString型です。
しかし、それらはすべてStringとして変換されます。
これは私の評価機能のスニペットです。
List<? extends StructField> fields = this.dataOI.getAllStructFieldRefs();
for (int i = 0; i < fields.size(); i++) {
System.out.println(fields.get(i).toString());
String canName = this.featuresOI.getStructFieldData(arguments[2].get(), fields.get(i)).getClass().getCanonicalName();
System.out.println(canName + " can name");
System.out.println(this.dataOI.getStructFieldData(arguments[2].get(), fields.get(i)));
}
これは、すべてを文字列として返します。
列の種類を保持できる方法はありますか?