亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試將架構應用于 JSON 數據時,SPARK 數據幀返回 null

嘗試將架構應用于 JSON 數據時,SPARK 數據幀返回 null

拉丁的傳說 2023-10-13 16:20:18
我使用 SPARK Java API 讀取文本文件,將其轉換為 JSON,然后對其應用架構。架構可能會根據數據庫中的映射表而有所不同,這就是為什么我需要首先將文件轉換為 JSON,以便架構映射不必按列順序。這是我所做的:// Defined the schema (basic representation)StructType myschema = new StructType().add("a", DataTypes.StringType, true)                                      .add("b", DataTypes.StringType, true)                                      .add("x", DataTypes.StringType, true)                                      .add("y", DataTypes.IntegerType, true)                                      .add("z", DataTypes.BooleanType, true);//Reading a pipe delimited text file as JSON, the file has less columns than myschemaDataset<String> data = spark.read().option("delimiter","|").option("header","true").csv(myFile).toJSON();上表返回類似這樣的內容:data.show(false);|value|+----------------------------------------+|      {"x":"name1","z":"true","y":"1234"}||      {"x":"name2","z":"false","y":"1445"}||      {"x":"name3","z":"true",:y":"1212"}|當我運行這個時,我的問題出現了:Dataset<Row> data_with_schema = spark.read().schema(myschema).json(data);因為我的結果變成了這樣:data_with_schema.show(false);|x|y|z|+-------+-------+-------+|null  |null  |null  ||null  |null  |null  ||null  |null  |null  |我在 stackoverflow 上讀到這可能是因為我試圖將 json 字符串轉換為整數。但是,我嘗試將數據變量定義為行數據集而不是字符串數據集,但出現不兼容類型錯誤。我不確定解決方法是什么或真正的問題是什么。
查看完整描述

3 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

找出問題所在:

如果輸入文件中的數據無法應用架構,則表中的所有數據都會返回 Null。例如:“1n”不可能轉換為整數。如果將 DataTypes.IntegerType 應用于包含“1n”的列,則整個表都具有空值。


查看完整回答
反對 回復 2023-10-13
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

我認為發生這種情況是由于 JSON 和定義的架構中的數據類型不匹配。例如,在 JSON 屬性中,“age”為整數,但 schema 定義了“age”為 String 類型。由于這種不匹配,所有數據都為空。



查看完整回答
反對 回復 2023-10-13
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

不確定這是否有幫助,但在 Spark 中讀取 JSON 文件時,請確保架構和 JSON 文件中的列名稱完全匹配。否則它將顯示空值。



查看完整回答
反對 回復 2023-10-13
  • 3 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號