Ho un tavolo cassandra con un campo di tipo testo denominato snapshot contenente oggetti JSON:Spark JSON campo di testo per RDD
[identifier, timestamp, snapshot]
ho capito che per essere in grado di fare le trasformazioni su quel campo con Spark, Devo convertire quel campo di quel RDD in un altro RDD per realizzare trasformazioni sullo schema JSON.
È corretto? Come devo procedere per quello?
Edit: Per ora sono riuscito a creare un RDD da un unico campo di testo:
val conf = new SparkConf().setAppName("signal-aggregation")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val snapshots = sc.cassandraTable[(String, String, String)]("listener", "snapshots")
val first = snapshots.first()
val firstJson = sqlContext.jsonRDD(sc.parallelize(Seq(first._3)))
firstJson.printSchema()
Il che mi mostra lo schema JSON. Buona!
Come faccio a comunicare a Spark che questo schema deve essere applicato su tutte le righe della tabella Istantanee, per ottenere un RDD su quel campo di istantanea da ciascuna riga?
Se ho capito bene, hai diversi oggetti JSON all'interno di ogni campo nella tabella cassandra e devi calcolare ogni oggetto in modo indipendente. –
Sì, hai ragione, ma ho letto da qualche parte che Spark può comprendere quel campo di testo come json e che potrei fare delle trasformazioni su alcuni valori di quei jsons, è corretto? – galex