Очистка данных в искре с использованием spark sql и закодированного в scala-символа - PullRequest
0 голосов
/ 19 сентября 2019

Я получаю файл от API в формате .csv, один из столбцов адреса содержит кодированные значения, такие как

(z$üíõ$F|'.h*Ë!øì=(.î;      
Þ.Í×áþ»¯Áͨ
(k$üíõ$F|'.r*Ë!øì=(.î;  
    Koæice

Но когда он читается в искре, он выглядит как

�����������������������������

Это мы можем сделать, когда мы используем spark 2.2

.option("encoding", "UTF-8") 

Но я использую spark 1.6, может ли кто-нибудь помочь мне, если какая-либо такая опция доступна в spark 1.6

В коде я сделалкак

WHERE COL LIKE "^[a-zA-Z0-9]*$"

Но тогда вывод будет 0 запись

Есть ли способ исключить целые строки, если какой-либо из столбцов такого рода не алфавит строки или числа в Spark.я использую scala и spark sql.

любую такую ​​библиотеку или функцию для обработки закодированных значений.

Spark Версия: 1.6

Большое спасибо

1 Ответ

0 голосов
/ 19 сентября 2019

что-то в этом роде:

val data = spark.read.option("header","true").csv("data/baddata.csv")
data.show()

data.filter(s=>s.getString(1).matches("^[a-zA-Z0-9]*$")).show()

и используя udf:

val correctString: String => Boolean = _.matches("^[a-zA-Z0-9]*$")
import org.apache.spark.sql.functions.udf
val correctStringUDF = udf(correctString)

data.filter(correctStringUDF('data)).show()

результат:

+---+--------------------+
| id|                data|
+---+--------------------+
|  0|             correct|
|  1|(z$üíõ$F|'.h*Ë!øì...|
|  2|         Þ.Í×áþ»¯Áͨ|
|  3|(k$üíõ$F|'.r*Ë!øì...|
|  4|              Koæice|
|  5|                  ok|
|  6|            ok ok ok|
+---+--------------------+

+---+-------+
| id|   data|
+---+-------+
|  0|correct|
|  5|     ok|
+---+-------+

+---+-------+
| id|   data|
+---+-------+
|  0|correct|
|  5|     ok|
+---+-------+

Вы также можете добиться этого, используя rdd

  val rddData = data.select('data)
    .map(_.getString(0))
    .rdd
    .filter(_.matches("^[a-zA-Z0-9]*$"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...