【发布时间】:2018-05-22 02:05:36
【问题描述】:
在pyspark sqlcontext sql中,已经编写了获取文本然后重新格式化的代码 但是这样的事情是个问题
在数据框中有这样的东西 代码在哪里
hash_tags_fun = udf(lambda t: re.findall('(#[^#]\w{3,})', t))
hash_tags_in_tweets_df.registerTempTable("hash_tags_table")
hash_tags_result = sqlContext.sql("SELECT text FROM hash_tags_table")
hash_tags_list = hash_tags_result.withColumn('text', hash_tags_fun('text'))
hash_tags_list.show(3)
+-------------------+
| text|
+-------------------+
| [#shutUpAndDANCE]|
| [#SHINee, #AMBER]|
|[#JR50, #flipagram]|
+-------------------+
我需要类似的东西
+-------------------+
| text|
+-------------------+
| #shutUpAndDANCE|
| #SHINee|
| #AMBER|
| #JR50|
| #flipagram|
+-------------------+
hash_tags_list.withColumn("text", explode("text")) has given an error saying
AnalysisException: u"cannot resolve 'explode(
text)' due to data type 不匹配:函数 explode 的输入应该是数组或映射类型,而不是 细绳;; \n'项目 [explode(text#24) AS text#68]\n+- 分析障碍\n
+- 项目 [(text#9) AS text#24]\n
+- 项目 [text#9]\n
+- 子查询别名 hash_tags_table\n
+- 项目 [text#9]\n
+- 过滤文本#9 LIKE %#%\n
+- 子查询别名 twt\n
+- SubqueryAlias 推文\n
+- 关系[country#6,id#7,place#8,text#9,user#10] json\n"
【问题讨论】:
-
Explode in PySpark的可能重复
-
你有一个字符串列。您将不得不删除括号,然后以逗号分隔。然后你就可以爆发了。您可以使用
pyspark.sql.functions.regexp_replace()和pyspark.sql.functions.split()