【发布时间】:2022-01-17 21:08:48
【问题描述】:
我创建了以下 DataFrame:
val data = spark.sparkContext.parallelize(Seq(("SnVsZXMgTmV3b25l"), ("Jason Kidd"), ("TXIgUm9uYWxkIE0=")))
val df_data = data.toDF()
val decoded_got = df_data.withColumn("xxx", unbase64(col("value")).cast("String"))
我得到以下信息:
+----------------+------------+
|name |xxx |
+----------------+------------+
|SnVsZXMgTmV3b25l|Jules Newone|
|Jason Kidd |%�(��� |
|TXIgUm9uYWxkIE0=|Mr Ronald M |
+----------------+------------+
我想要做的是避免列名的值不在base 64中。例如,获取以下Df:
+----------------+------------+
|name |xxx |
+----------------+------------+
|SnVsZXMgTmV3b25l|Jules Newone|
|Jason Kidd |Jason Kidd |
|TXIgUm9uYWxkIE0=|Mr Ronald M |
+----------------+------------+
我正在尝试这样的事情,但对我不起作用:
val regex1 = """^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$"""
val check = df_data.withColumn("xxx", when(regex1 matches col("value"), unbase64(col("value"))).otherwise(col("value")))
Spark Scala 中是否有一个选项可以检查值是否在 base64 中,或者我该怎么做?
【问题讨论】:
标签: scala apache-spark apache-spark-sql