apache-spark - Spark SQL,不尊重 Dataframe 格式
问题描述
我正在使用 Spark SQL 以 JSON 格式分析 Twitter 文件,以获取热门话题
在将所有文本从 Tweet 中取出并拆分单词后,我的 dataFrame 看起来像这样
+--------------------+--------------------+
| line| words|
+--------------------+--------------------+
|[RT, @ONLYRPE:, #...| RT|
|[RT, @ONLYRPE:, #...| @ONLYRPE:|
|[RT, @ONLYRPE:, #...| #tlrp|
|[RT, @ONLYRPE:, #...| followan?|
我只需要列字,我将我的表格转换为 temView。
df.createOrReplaceTempView("Twitter_test_2")
借助 spark sql 应该很容易掌握热门话题,我只需要在 sql 中使用 where 条件运算符“Like”进行查询。这样的词 ”#%”
spark.sql("select words,
count(words) as count
from words_Twitter
where words like '#%'
group by words
order by count desc limit 10").show(20,False)
但我得到了一些奇怪的结果,我找不到它们的解释。
+---------------------+---+
|words |cnt|
+---------------------+---+
|#izmirescort |211|
|#PRODUCE101 |101|
|#VeranoMTV2017 |91 |
|#سلمان_يدق_خشم_العايل|89 |
|#ALDUBHomeAgain |67 |
|#BTS |32 |
|#سود_الله_وجهك_ياتميم|32 |
|#NowPlaying |32 |
出于某种原因,#89 和 #32 the twoo thar 有阿拉伯字符不在他们应该在的地方。文本已与柜台交换。
其他时候我会遇到这种格式。
spark.sql("select words, lang,count(words) count from Twitter_test_2 group by words,lang order by count desc limit 10 ").show()
在对我的数据框进行查询之后,它看起来很奇怪
+--------------------+----+-----+
| words|lang|count|
+--------------------+----+-----+
| #VeranoMTV2017| pl| 6|
| #umRei| pt| 2|
| #Virgem| pt| 2|
| #rt
2| pl| 2|
| #rt
gazowaną| pl| 1|
| #Ziobro| pl| 1|
| #SomosPorto| pt| 1|
+--------------------+----+-----+
为什么会发生这种情况,如何避免呢?
解决方案
推荐阅读
- sql-server - SQL Server 上的 FirstDayofWeek 和 LastDayOfWeek
- javascript - 如何将功能承诺打字稿更改为 es6?
- amazon-web-services - 有没有办法在 Timestream 中获取记录的版本?
- java - 进入应用时小部件停止更新
- python - 如何在 anaconda 上安装 biopython?我尝试使用“pip install biopython”,但它给了我错误
- docker - Nextflow 真的不一致还是我使用 nf-core/rnaseq 做错了什么?
- mysql - 我如何计算正在使用的相同电子邮件,但此 MySQL 数据库中的域不同?
- javascript - Javascript将带有类的div添加到突出显示的文本
- ios - 寻找用于文本替换的 iOS 快捷方式
- javascript - 尝试使用 Wix Velo 和 Promises 返回 ID