apache-spark - Pyspark(Dataframes)逐行读取文件(将行转换为字符串)
问题描述
我需要逐行读取文件并将每一行拆分为单词并对单词执行操作。
我怎么做?
我写了下面的代码:
logFile = "/home/hadoop/spark-2.3.1-bin-hadoop2.7/README.md" # Should be
some file on your system
spark = SparkSession.builder.appName("SimpleApp1").getOrCreate()
logData = spark.read.text(logFile).cache()
logData.printSchema()
logDataLines = logData.collect()
#The line variable below seems to be of type row. How I perform similar operations
on row or how do I convert row to a string.
for line in logDataLines:
words = line.select(explode(split(line,"\s+")))
for word in words:
print(word)
print("----------------------------------")
解决方案
我认为你应该map
对你的行应用一个函数。您可以在自创函数中应用任何内容:
data = spark.read.text("/home/spark/test_it.txt").cache()
def someFunction(row):
wordlist = row[0].split(" ")
result = list()
for word in wordlist:
result.append(word.upper())
return result
data.rdd.map(someFunction).collect()
输出:
[[u'THIS', u'IS', u'JUST', u'A', u'TEST'], [u'TO', u'UNDERSTAND'], [u'THE', u'PROCESSING']]
推荐阅读
- elasticsearch - 筛选包含 ElasticSearch 中所有给定值的数组的项目
- javascript - 使用 javascript 查找特定值的 json 路径
- php - 注销后带有数据库驱动程序的 Laravel Session 不断更新
- ios - Shark ORM 在 iPhone 和模拟器中不起作用
- active-directory - LDAP查询通过IP登录的用户
- python - 在自引用多对多关系中获取相关对象的更好方法?
- c# - 在参数化查询中格式化日期时间的问题
- java - Java - 使用 ObjectStream 发送套接字
- javascript - 测试使用 react-router-dom 和 jest 和酶的 React 组件
- php - 重音字符导致 PHP 中 iPhone 上 $_COOKIE 字符串的结尾