无法使用spark读取json数据

iyr7buue  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(495)

这个问题在这里已经有了答案

如何访问json文件中的子实体(1个答案)
两年前关门了。
我正试着读这本书 Json 使用的数据 Apache Spark . 以下是我迄今为止尝试的代码:

val conf = new SparkConf()
      .setAppName("ExplodeDemo")
      .setMaster("local")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    import sqlContext.implicits._
val df = sqlContext.read.json("file location")
df.printSchema()

当我将文件名作为参数传递给 sqlContext.read.json 但我的要求是通过考试 json String 直接代替文件。
为此,我试着这样做:

val rdd = sc.parallelize(Seq(r))
val df = sqlContext.read.json(rdd)
df.printSchema()

哪里 r 是我的json字符串,通过使用此代码,没有编译错误。但是当我尝试df.printschema()时,它显示如下,并且无法检索数据。

root
 |-- _corrupt_record: string (nullable = true)
a64a0gku

a64a0gku1#

好吧,你也需要提供模式。
dataframe只是一个带有schema的rdd。在使用datasourceapi时,spark将通过读取文件来推断模式。由于没有使用datasourceapi自动推断模式,因此需要显式地传递模式。

val YOURSCHEMA= StructType(Array(
  StructField("Attribute1", LongType, true),
  StructField("Attribute2", IntType, true)))
val df=spark.read.schema(YOURSCHEMA).json(rdd)
df.printSchema

相关问题