计算 Spark 数据框中的单词数

2024-01-25

在不使用 SQL 的 REPLACE() 函数的情况下,如何找到 Spark 数据帧的列中的单词数?下面是我正在使用的代码和输入,但 Replace() 函数不起作用。

from pyspark.sql import SparkSession
my_spark = SparkSession \
    .builder \
    .appName("Python Spark SQL example") \
    .enableHiveSupport() \
    .getOrCreate()

parqFileName = 'gs://caserta-pyspark-eval/train.pqt'
tuesdayDF = my_spark.read.parquet(parqFileName)

tuesdayDF.createOrReplaceTempView("parquetFile")
tuesdaycrimes = spark.sql("SELECT LENGTH(Address) - LENGTH(REPLACE(Address, ' ', ''))+1 FROM parquetFile")

print(tuesdaycrimes.show())


+-------------------+--------------+--------------------+---------+----------+--------------+--------------------+-----------+---------+
|              Dates|      Category|            Descript|DayOfWeek|PdDistrict|    Resolution|             Address|          X|        Y|
+-------------------+--------------+--------------------+---------+----------+--------------+--------------------+-----------+---------+
|2015-05-14 03:53:00|      WARRANTS|      WARRANT ARREST|Wednesday|  NORTHERN|ARREST, BOOKED|  OAK ST / LAGUNA ST| -122.42589|37.774597|
|2015-05-14 03:53:00|OTHER OFFENSES|TRAFFIC VIOLATION...|Wednesday|  NORTHERN|ARREST, BOOKED|  OAK ST / LAGUNA ST| -122.42589|37.774597|
|2015-05-14 03:33:00|OTHER OFFENSES|TRAFFIC VIOLATION...|Wednesday|  NORTHERN|ARREST, BOOKED|VANNESS AV / GREE...| -122.42436|37.800415|

使用 pyspark DataFrame 函数计算单词数的方法有很多种,具体取决于您要查找的内容。

创建示例数据

import pyspark.sql.functions as f
data = [
    ("2015-05-14 03:53:00", "WARRANT ARREST"),
    ("2015-05-14 03:53:00", "TRAFFIC VIOLATION"),
    ("2015-05-14 03:33:00", "TRAFFIC VIOLATION")
]

df = sqlCtx.createDataFrame(data, ["Dates", "Description"])
df.show()

在此示例中,我们将计算Description column.

每行计数

如果您想要每行指定列中的单词数,您可以使用以下命令创建一个新列withColumn()并执行以下操作:

  • Use pyspark.sql.functions.split() http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.split将字符串分解为列表
  • Use pyspark.sql.functions.size() http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.size计算列表的长度

例如:

df = df.withColumn('wordCount', f.size(f.split(f.col('Description'), ' ')))
df.show()
#+-------------------+-----------------+---------+
#|              Dates|      Description|wordCount|
#+-------------------+-----------------+---------+
#|2015-05-14 03:53:00|   WARRANT ARREST|        2|
#|2015-05-14 03:53:00|TRAFFIC VIOLATION|        2|
#|2015-05-14 03:33:00|TRAFFIC VIOLATION|        2|
#+-------------------+-----------------+---------+

所有行的字数总和

如果你想计算整个 DataFrame 中列中的总单词数,你可以使用pyspark.sql.functions.sum() http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.sum:

df.select(f.sum('wordCount')).collect() 
#[Row(sum(wordCount)=6)]

统计每个单词出现的次数

如果您想要整个 DataFrame 中每个单词的计数,您可以使用split() and pyspark.sql.function.explode() http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.functions.explode随后是一个groupBy and count().

df.withColumn('word', f.explode(f.split(f.col('Description'), ' ')))\
    .groupBy('word')\
    .count()\
    .sort('count', ascending=False)\
    .show()
#+---------+-----+
#|     word|count|
#+---------+-----+
#|  TRAFFIC|    2|
#|VIOLATION|    2|
#|  WARRANT|    1|
#|   ARREST|    1|
#+---------+-----+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算 Spark 数据框中的单词数 的相关文章

随机推荐

  • TFSBuild/MSBuild 和项目参考与文件参考

    我们有一个使用项目引用的大型 VS 解决方案 该解决方案由 TFS Build 构建 如下所示 Solution Project 1 Project 2 Project Project N 由于解决方案太大 我们有几个日常使用的较小解决方案
  • 如何显示 tiff 图像?

    我完全迷失了 我需要一些人来指导我 我看过很多帖子 但没有解释如何显示 tif 图像 我在哪里可以找到一些教程 如果可能的话 我需要从一开始 或者如果你能帮助我那就太好了 我只是一个持有图像的新手 我使用 mvc 4 正如您可能发现的那样
  • 命令提示符中“cls”之后但不在“cls”之前的彩色文本

    我有一个 python 程序 我试图在命令提示符中使用 ANSI 代码以彩色文本打印 Hello 当我正常打印时 它不起作用 它只是打印 和文本 但是当我在清除命令提示符后打印它时 它工作正常 有人可以解释一下这种奇怪的性质吗 我搜索了这个
  • 单个 TextView 中的多个 TypeFace

    我想将第一个字符设置为TextView with a TypeFace以及具有不同类型面孔的第二个角色 依此类推 我读过这个例子 Spannable str Spannable textView getText str setSpan ne
  • 在 Symfony2 中测试文件上传

    在 Symfony2 文档中 它给出了一个简单的示例 client gt request POST submit array name gt Fabien array photo gt path to photo 模拟文件上传 然而 在我的
  • JPA - 我可以使用 @DiscriminatorValue 创建一个没有自己的表的实体类吗?

    我使用带有联合继承的 JPA 和如下所示的数据库结构 ACTION ACTION ID ACTION MAPPING ID ACTION TYPE DELIVERY CHANNEL ACTION ACTION ID CHANNEL ID O
  • WPF 交互触发器在样式中调用视图模型上的命令[重复]

    这个问题在这里已经有答案了 可能的重复 如何在样式设置器中添加混合行为 https stackoverflow com questions 1647815 how to add a blend behavior in a style set
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 静态类必须从对象派生 (C#)

    我在 C 中遇到问题 输出状态为 Error 1 Static class WindowsFormsApplication1 Hello2 cannot derive from type System Windows Forms Form
  • Celery AttributeError:异步错误

    我在 Mac OS X 10 13 4 上本地运行 RabbitMQ 和 Celery 当我运行 add delay x y 时 以下代码在本地运行 usr bin env python from celery import Celery
  • SSH 和 -bash:fork:无法分配内存 VPS Ubuntu

    我在 Ubuntu 12 04 VPS Nginx Unicorn 上托管我的 Rails 应用程序 部署后一切正常 但几个小时后 当我 ssh 到 VPS 时 我收到此消息 bash fork Cannot allocate memory
  • 如何为谷歌地图设置自定义标记标题

    如何设置包含信息和按钮的样式自定义标记标题 片段 我已经有一个自定义标记图标图像集 现在我需要一个自定义弹出窗口 当用户点击标记时 该窗口将包含某些信息和一个按钮 这与我想要实现的目标很接近 自定义标题 片段示例 LatLng huduma
  • std::array 是可移动的吗?

    std array 是可移动的吗 In Bjarne Native 2012 演示幻灯片 http ecn channel9 msdn com events GoingNative12 GN12Cpp11Style pdf 幻灯片 41 列
  • 如何使用 firebug 检查 CSS 伪类?

    我正在与一种不情愿的挣扎a hover我无法覆盖的 css 样式 我尝试检查 Firebug 中的元素 但我不明白为什么它不起作用 我什至不知道如何正确检查a hoverFirebug 中的 CSS 事件 我见过 Firebug 中的悬停检
  • 错误:根:未找到哈希 md5 代码

    我在一台没有 root 访问权限的 Linux 机器上 我构建了自己的 openssl 和 python 本地副本 2 7 13 当我尝试在 python 中导入 hashlib 时 收到以下错误消息 gt python Python 2
  • 鼠标点击时 Div 隐藏/显示的问题

    我尝试了你的脚本 但它不能正常工作 我编辑了下面的代码以准确显示我正在使用的内容 非常感谢您的帮助 Quazi Hi 我对 JQuery 很陌生 我正在尝试获取一个 divfade in在点击事件之后然后hide单击任意位置后 我设置了三个
  • 什么是列存储索引以及与聚集索引和非聚集索引有何不同?

    我对列存储索引感到困惑 什么是列存储索引 它与聚集索引和非聚集索引有何不同 假设您有如下表col1作为主键 col1 PK col2 col3 1 2 3 4 5 6 普通索引将 按行 每行 存储 因此单个给定行的所有列都驻留在单个页面上
  • 如何在 IntelliJ Rider 中生成 API 控制器?

    在 Visual Studio 中 我可以通过选择 添加 在 Web API 项目中生成 API 控制器 控制器 从这个菜单中 我可以选择模型类 上下文类和控制器名称 并且按下按钮我可以生成数百行样板文件 我已转移到 IntelliJ Ri
  • GLSurfaceView.queueEvent不在GL线程中执行

    我正在尝试从我的主要活动中为我的 GLSurfaceView 执行一些 OpenGL 命令 由于 OpenGL 渲染器在它自己的线程中工作 我必须使用queueEvent 据我所理解 我正在打电话queueEvent在我的 GLSurfac
  • 计算 Spark 数据框中的单词数

    在不使用 SQL 的 REPLACE 函数的情况下 如何找到 Spark 数据帧的列中的单词数 下面是我正在使用的代码和输入 但 Replace 函数不起作用 from pyspark sql import SparkSession my