首页 文章

在Windows 7上使用Spark流式传输目录

提问于
浏览
0

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

我想从目录中流式传输文件 . 根据doc,函数textFileStream(目录):

创建一个输入流,监视与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路径有关,但没有任何反复发生 .

我做错了吗?

1 回答

  • 0

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

    但这并不简单,我在受监控的目录中有一个文件,并且在拾取之前几乎没有内容和文件名更改,然后在某些时候它停止对我的更改做出反应并被拾取,因此结果不一致 . 猜猜它是Windows的东西 .

    我知道这样做是有效的,所以每次尝试时我都要耐心一点,在拾取之前尝试一些名称更改,但这只是证明它有效,但显然对其他任何事情都没有好处 .

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

相关问题