日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

JSON文件

重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。

在Spark中,我們提及的JSON文件是換行符分隔的JSON,每行必須包含一個單獨的,獨立有效的JSON對象。

前提條件

警告

首次使用DDI產品創建的Bucket為系統目錄Bucket,不建議存放數據,您需要再創建一個Bucket來讀寫數據。

說明

DDI訪問OSS路徑結構:oss://BucketName/Object

  • BucketName為您的存儲空間名稱。

  • Object為上傳到OSS上的文件的訪問路徑。

例:讀取在存儲空間名稱為databricks-demo-hangzhou文件路徑為demo/The_Sorrows_of_Young_Werther.txt的文件

// 從oss地址讀取文本文檔
val dataRDD = sc.textFile("oss://databricks-demo-hangzhou/demo/The_Sorrows_of_Young_Werther.txt"

JSON讀取程序中的可選項

read/write

Key

取值范圍

默認值

說明

Both

Compression或code

None,uncompressed,bzip2,defalte,gzip,lz4,snappy

none

聲明Spark應該使用什么壓縮編解碼來讀取或寫入文件

Both

dateFormat

任何符合Java SimpleDateFormat格式的字符串或字符

yyyy-MM-dd

為日期類型的列聲明日期格式

Both

timestampFormat

任何符合Java SimpleDateFormat格式的字符串或字符

yyyy-MM-dd'T'HH:mm:ss:SSSZZ

為時間戳類型的列聲明時間格式

Read

primitiveAsString

true,false

false

將所有原始值推斷為字符串類型

Read

allowComments

true,false

false

忽略JSON記錄中的Java/C++樣式注解

Read

allowUnquoteFieldNames

true,false

false

允許不帶引號的JSON字段名

Read

allowSingleQuotes

true,false

true

除雙引號外還允許使用單引號

Read

allowNumericLeadingZeros

true,false

false

允許數字中存在前導零(例如,00012)

Read

allowBackslashEscAPIngAny

true,false

false

允許反斜杠機制接受所有字符

Read

columnNameOfCorruptRecord

Any String

Spark.sql.column&NameOfCorruptRecord

允許重命名,permissive模式下添加的新字段,會覆蓋重寫

Read

multiLine

true,false

false

允許讀取非換行符分隔的JSON文件

實例

說明

本實例展示了如何使用notebook讀取JSON文件的多種方式。

%spark
spark.read.format("json")

實例數據

{"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}}
{"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}}
{"string":"string3","int":3,"array":[3,6,9],"dict": {"key": "value3", "extra_key": "extra_value3"}}
  1. 數據讀取

%spark
val path="oss://databricks-data-source/datas/example.json"
val data_json=spark.read .format("json").load(path)
data_json.show()
data_json.printSchema()
data1

2. 添加mode,inferSchema選項

mode = FAILFAST

inferSchema = true

%spark

val path="oss://databricks-data-source/datas/example.json"
val data_json= spark.read.format("json")
      .option("header", "true")
      .option("mode","FAILFAST")
      .option("inferSchema","true")
      .load(path)
data_json.show()
data_json.printSchema()
data2

3. multiLine 選項

多個對象組成的一條JSON時的數據源

{"1":{"string":"string1","int":1,"array":[1,2,3],"dict": {"key": "value1"}},
"2":{"string":"string2","int":2,"array":[2,4,6],"dict": {"key": "value2"}},
"3":{"string":"string3","int":3,"array":[3,6,9],"dict": {"key": "value3", "extra_key": "extra_value3"}}}

實例代碼

%spark

val path="oss://databricks-data-source/datas/json_test_oneLine.json"
val data_json= spark.read.format("json")
      .option("header", "true")
      .option("inferSchema","true")
      .option("mode", "DROPMALFORMED") //遇到解析不了,放棄該記錄
      .option("multiLine", "true") //允許讀取非換行符分割的JSON文件
      .load(path)
data_json.show(false)
data1

SQL格式

%sql

CREATE TEMPORARY VIEW multiLineJsonTable
USING json
OPTIONS (path="oss://databricks-data-source/datas/example.json")
%sql
select * from  multiLineJsonTable limit 3
data1