簡體   English   中英

for循環中Spark列的數據類型驗證-Spark DataFrame

[英]Datatype validation of Spark columns in for loop - Spark DataFrame

我試圖在進入循環之前驗證DataFrame的數據類型,在其中嘗試進行SQL計算,但是數據類型驗證沒有通過,也沒有進入循環內部。 該操作僅需要在數字列上執行。

如何解決呢? 這是處理數據類型驗證的正確方法嗎?

//get datatype of dataframe fields
val datatypes =  parquetRDD_subset.schema.fields

//check if datatype of column is String and enter the loop for calculations.

for (val_datatype <- datatypes if val_datatype.dataType =="StringType") 
{
    val dfs = x.map(field => spark.sql(s"select * from table"))
    val withSum = dfs.reduce((x, y) => x.union(y)).distinct()
}

您正在將dataType與永遠不會為真的字符串進行比較(對我而言,編譯器抱怨它們不相關)。 dataType是一個對象,它是org.apache.spark.sql.types.DataType的子類型。

嘗試用替換您的

for (val_datatype <- datatypes if val_datatype.dataType.isInstanceOf[StringType]) 

無論如何,您的for循環只會聲明val,而不會對其進行任何處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM