1
com.google.gson.JsonObject型のElementのRDDからデータを読み取り中です。これをDataSetに変換しようとしていますが、これを行う方法がわかりません。スパーク[JSONObject]をデータセットにRDDする方法
import com.google.gson.{JsonParser}
import org.apache.hadoop.io.LongWritable
import org.apache.spark.sql.{SparkSession}
object tmp {
class people(name: String, age: Long, phone: String)
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().master("local[*]").getOrCreate()
val sc = spark.sparkContext
val parser = new JsonParser();
val jsonObject1 = parser.parse("""{"name":"abc","age":23,"phone":"0208"}""").getAsJsonObject()
val jsonObject2 = parser.parse("""{"name":"xyz","age":33}""").getAsJsonObject()
val PairRDD = sc.parallelize(List(
(new LongWritable(1l), jsonObject1),
(new LongWritable(2l), jsonObject2)
))
val rdd1 =PairRDD.map(element => element._2)
import spark.implicits._
//How to create Dataset as schema People from rdd1?
}
}
がさえ要素RDD1印刷しようとすると、
object not serializable (class: org.apache.hadoop.io.LongWritable, value: 1)
- field (class: scala.Tuple2, name: _1, type: class java.lang.Object)
- object (class scala.Tuple2, (1,{"name":"abc","age":23,"phone":"0208"}))
をスロー基本的に私は私が形質転換のためのSQLを適用することができるようにデータセットに変換したいBigQueryテーブルからこのRDD [LongWritable、JsonParser]を取得します。
私は意図的に2番目のレコードnullに電話を残しましたが、BigQueryはnull値を持つ要素に対して何も返しません。
おかげShoaibを含む設定で新しいスパークコンテキストを作成する必要がありました火花シェルで実行しています、私は私の質問を編集しました。 – xstack2000