小编Har*_*Koo的帖子

如何使用包含"$"的列名进行查询?

在Spark SQL中,我可以使用

val spark = SparkSession
      .builder()
      .appName("SparkSessionZipsExample")
      .master("local")
      .config("spark.sql.warehouse.dir", "warehouseLocation-value")
      .getOrCreate()

val df = spark.read.json("source/myRecords.json")
df.createOrReplaceTempView("shipment")
val sqlDF = spark.sql("SELECT * FROM shipment")
Run Code Online (Sandbox Code Playgroud)

从"myRecords.json"获取数据,这个json文件的结构是:

df.printSchema()
root
 |-- _id: struct (nullable = true)
 |    |-- $oid: string (nullable = true)
 |-- container: struct (nullable = true)
 |    |-- barcode: string (nullable = true)
 |    |-- code: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

我可以得到这个json的特定列,例如:

val sqlDF = spark.sql("SELECT container.barcode, container.code FROM shipment")
Run Code Online (Sandbox Code Playgroud)

但是如何从这个json文件中获取id.$ oid?我曾尝试"SELECT id.$oid FROM shipment_log""SELECT id.\$oid FROM shipment_log" …

json scala apache-spark apache-spark-sql

4
推荐指数
1
解决办法
313
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

json ×1

scala ×1