我试着用spark里的结构化流媒体来对抗Kafka的一个地方主题。
首先我介绍zookeeper和kafka:
write-host -foregroundcolor green "starting zookeeper..."
start "$KAFKA_ROOT\bin\windows\zookeeper-server-start.bat" "$KAFKA_ROOT\config\zookeeper.properties"
write-host -foregroundcolor green "starting kafka..."
start "$KAFKA_ROOT\bin\windows\kafka-server-start.bat" "$KAFKA_ROOT\config\server.properties"
然后我开始这样做:
& "$SPARK_ROOT\bin\spark-shell.cmd" --packages "org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.1"
然后我执行这个scala命令:
val ds = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:9092").option("subscribe", "test").load()
但我发现这个错误:
org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-;
每个搜索结果都会显示一些关于使用winutils设置权限的信息,因此我尝试了这些答案,结果如下:
C:\>winutils chmod 777 \tmp\hive
C:\>winutils chmod 777 C:\tmp\hive
C:\>winutils ls C:\tmp\hive
drwxrwxrwx 1 DOMAIN\user DOMAIN\Domain Users 0 Jun 21 2018 C:\tmp\hive
看起来不错,但仍然发生相同的异常。
%hadoop\u home%正确设置为d:\dependencies\hadoop,并且存在d:\dependencies\hadoop\bin\winutils.exe。
我错过了什么?我已经在这里和那里通过了十几个职位,但解决方案是不适合我,我不知道如何调试它。
2条答案
按热度按时间htzpubme1#
您需要在hdfs目录上设置预期的访问模式,而不是在本地fs上的目录上。
你需要使用
hadoop fs -chmod ...
这是我的命令。另外,不要忘记检查启动spark应用程序的用户是否有能力写入/tmp/hive
可以显式地或通过在组中写入此目录。您可以参考有关hdfs文件权限的官方文档。
更新:
因此,如果您遇到了相同的问题,您需要使用winutils,正如在原始帖子或其他类似问题中所提到的,但是有问题的目录可能不在磁盘c:上,并且您需要用正确的驱动器号调整临时目录的路径。
ilmyapht2#
所以拔掉头发两天后,当然是简单的事情。如果您是从另一个驱动器(例如d:)上的工作目录调用c:\spark\bin\spark shell,那么您需要更新的权限实际上是:
我找不到任何命令,也看不到任何配置,或者web ui中的环境配置页都不应该显示当前配置单元目录是什么。