Метод cast приводит к нулевым значениям в java spark

У меня есть простой пример использования соединения двух структур данных, я использую версию spark 1.6.3. Проблема заключается в том, что при попытке привести строковый тип к целочисленному типу с использованием метода приведения получающийся столбец имеет все нулевые значения.

Я уже перепробовал все решения, упомянутые здесь. Как привести столбец в dataframe? но на все вопросы есть ответы для scala api, и я не смог найти никого, кто работает с java api.

DataFrame dataFromDB = getDataFromDB("(select * from schema.table where 
col1 is not null)"); //This method uses spark sql 
                    //to connect to a db2 data base and get the data

//I perform the cast operation as
dataFromDB.withColumn("INCOME_DATA", dataFromDB.col("INCOME_DATA")
                                    .cast(DataTypes.IntegerType));
//but the above results in null values
//other things I tried based on the link above is below
dataFromDB.selectExpr(cast("INCOME_DATA" as integer")) //this too produces null values

//I tried to remove the whitespaces from income data column with no success
dataFromDB.select(dataFromDB.col("INCOME_DATA").toString().replaceAll("\\s+", ""); //this does not remove any whitespace

Я не могу найти решение для этого, также столбец, который я пытаюсь преобразовать, имеет тип String и может содержать конечные пробелы, это может быть проблемой? если да, то как я могу удалить их, я попытался удалить их, как показано ниже, но, похоже, не работает. Это моя первая работа с искровым фреймом данных, поэтому любая помощь в этом очень ценится. Спасибо!

1 ответ

Можете ли вы попробовать что-то подобное для своей последней строки?

import org.apache.spark.sql.functions._
dataFromDB.withColumn("INCOME_DATA", regexp_replace($"INCOME_DATA", "\\s+", "")).select("INCOME_DATA")

В Java:

dataFromDB.withColumn("INCOME_DATA", functions.regexp_replace(functions.col("INCOME_DATA"), "\\s+", "")).select("INCOME_DATA");
Другие вопросы по тегам