ich eine Tabelle in Hive haben, der die folgende Struktur aufweist:cloudera Impalas jdbc Abfrage sieht nicht Array <string> Hive Spalte
> describe volatility2;
Query: describe volatility2
+------------------+---------------+---------+
| name | type | comment |
+------------------+---------------+---------+
| version | int | |
| unmappedmkfindex | int | |
| mfvol | array<string> | |
+------------------+---------------+---------+
Es Spark HiveContext Code erstellt wurde, indem ein Dataframe API wie folgt aus:
val volDF = hc.createDataFrame(volRDD)
volDF.saveAsTable(volName)
die sich über die RDD Struktur getragen, die im Schema definiert wurde:
def schemaVolatility: StructType = StructType(
StructField("Version", IntegerType, false) ::
StructField("UnMappedMKFIndex", IntegerType, false) ::
StructField("MFVol", DataTypes.createArrayType(StringType), true) :: Nil)
Wenn ich jedoch versuche, mit dem neuesten JDBC-Impala-Treiber aus dieser Tabelle auszuwählen, ist die letzte Spalte nicht sichtbar. Meine Frage ist sehr einfach - versuchen, die Daten an die Konsole zu drucken - genau wie im Codebeispiel durch den Treiber-Download zur Verfügung gestellt:
String sqlStatement = "select * from default.volatility2";
Class.forName(jdbcDriverName);
con = DriverManager.getConnection(connectionUrl);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sqlStatement);
System.out.println("\n== Begin Query Results ======================");
ResultSetMetaData metadata = rs.getMetaData();
for (int i=1; i<=metadata.getColumnCount(); i++) {
System.out.println(rs.getMetaData().getColumnName(i)+":"+rs.getMetaData().getColumnTypeName(i));
}
System.out.println("== End Query Results =======================\n\n");
Die Konsolenausgabe es das:
== Begin Query Results ======================
version:version
unmappedmkfindex:unmappedmkfindex
== End Query Results =======================
Ist es ein Treiberfehler oder mir fehlt etwas?