【问题标题】:Streaming a directory with Spark on Windows 7在 Windows 7 上使用 Spark 流式传输目录
【发布时间】:2017-01-07 08:14:57
【问题描述】:

我在 Windows 7 上运行带有 Python 2.7 的 Spark 1.6.1。 HDFS 上的根暂存目录:/tmp/hive 是可写的,我当前的权限是:rwxrwxrwx(使用 winutils 工具)。

我想从一个目录流式传输文件。根据文档,函数 textFileStream(directory):

创建一个监控 Hadoop 兼容文件系统的输入流 新文件并将它们作为文本文件读取。文件必须写入 通过从另一个位置“移动”受监控的目录 相同的文件系统。以 . 开头的文件名被忽略。

当我启动 Spark Streaming 命令时:

lines = ssc.textFileStream(r"C:/tmp/hive/")
counts = lines.flatMap(lambda line: line.split(" "))\
                  .map(lambda x: (x, 1))\
                  .reduceByKey(lambda a, b: a+b)
counts.pprint()
ssc.start() 

然后在我的目录中创建要流式传输的文件,没有任何反应。

我也试过这个:

lines = ssc.textFileStream("/tmp/hive/")

lines = ssc.textFileStream("hdfs://tmp/hive/")

这与 HDFS 路径相关,但没有再次发生。

我做错了吗?

【问题讨论】:

    标签: python apache-spark pyspark spark-streaming


    【解决方案1】:

    尝试在 Windows 上使用“file:///C:/tmp/hive”作为目录,在带有 Spark 1.6.3 的 Windows 8 上为我工作,但在我制作之前我不得不对文件名和内容进行一些处理这行得通。我还尝试了其他路径,因此可以确认它与以任何方式与 winutits 无关的路径的工作方式相同,例如如果你有你的数据,你可以使用“file:///D:/someotherpath”

    但这并不简单,我在受监控的目录中有一个文件,在它被拾取之前做了一些内容和文件名的更改,然后在某个时候它停止对我的更改做出反应并被拾取,所以结果不是持续的。猜猜这是 Windows 的问题。

    我知道它有效,所以每次尝试时我都知道必须耐心并尝试一些名称更改才能被采纳,但这只是证明它有效,显然对其他任何事情都没有好处。

    我正在做的另一件事是在文件中使用 Unix eof 而不是 Windows eof,但不能断言它是必需的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2017-05-26
      • 1970-01-01
      相关资源
      最近更新 更多