Sto provando a leggere questo file json in una tabella alveare, i tasti di livello superiore, ad esempio 1,2 .., qui non sono coerenti.leggi i valori-chiave di json con hive/sql e spark
{
"1":"{\"time\":1421169633384,\"reading1\":130.875969,\"reading2\":227.138275}",
"2":"{\"time\":1421169646476,\"reading1\":131.240628,\"reading2\":226.810211}",
"position": 0
}
Ho solo bisogno di tempo e letture 1,2 nel mio tavolo alveare come colonne ignorano posizione. Posso anche fare una combinazione di query hive e codice per ridurre le scintille. Grazie per l'aiuto.
Update, qui è quello che sto cercando
val hqlContext = new HiveContext(sc)
val rdd = sc.textFile(data_loc)
val json_rdd = hqlContext.jsonRDD(rdd)
json_rdd.registerTempTable("table123")
println(json_rdd.printSchema())
hqlContext.sql("SELECT json_val from table123 lateral view explode_map(json_map(*, 'int,string')) x as json_key, json_val ").foreach(println)
Si getta il seguente errore:
Exception in thread "main" org.apache.spark.sql.hive.HiveQl$ParseException: Failed to parse: SELECT json_val from temp_hum_table lateral view explode_map(json_map(*, 'int,string')) x as json_key, json_val
at org.apache.spark.sql.hive.HiveQl$.createPlan(HiveQl.scala:239)
at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:50)
at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:49)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:136)
at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:135)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)
at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)
at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:222)
Un esempio di ciò che si desidera rendere l'output sarebbe estremamente utile. – gobrewers14
esempio della tabella di output: '" time "," reading1 "," reading2 "\ n 1421169633384, 130.875969, 227.138275 \ n 1421169646476, 131.240628, 226.810211' – venuktan