метод cast приводит к нулевым значениям в java spark - PullRequest
0 голосов
/ 19 декабря 2018

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

Я уже перепробовал все решения, упомянутые здесь Как привести столбец в фрейм данных? но на все вопросы есть ответы для 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 Ответ

0 голосов
/ 20 декабря 2018

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

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");
...