我正在尝试在 Spark HDInsight 集群上运行 python wordcount,我正在从 Jupyter 运行它。我实际上不确定这是否是正确的方法,但我找不到任何关于如何在 HDInsight Spark 群集上提交独立 python 应用程序的有用信息。
编码 :
import pyspark
import operator
from pyspark import SparkConf
from pyspark import SparkContext
import atexit
from operator import add
conf = SparkConf().setMaster("yarn-client").setAppName("WC")
sc = SparkContext(conf = conf)
atexit.register(lambda: sc.stop())
input = sc.textFile("wasb:///example/data/gutenberg/davinci.txt")
words = input.flatMap(lambda x: x.split())
wordCount = words.map(lambda x: (str(x),1)).reduceByKey(add)
wordCount.saveAsTextFile("wasb:///example/outputspark")
Run Code Online (Sandbox Code Playgroud)
我收到但不明白的错误消息:
ValueError Traceback (most recent call last)
<ipython-input-2-8a9d4f2cb5e8> in <module>()
6 from operator import add
7 import atexit
----> 8 sc = SparkContext('yarn-client') …Run Code Online (Sandbox Code Playgroud) python apache-spark pyspark jupyter-notebook azure-hdinsight
我在 Azure VNet 上有一个 HDInsight Hadoop 集群(Linux,单独部署)(使用 NSG 限制客户端 IP)。
Azure SQL 防火墙有一个名为“允许访问 Azure 服务”的选项,它允许数据工厂访问 Azure SQL。
在 VNet 中没有这样的选项,您必须指定 IP 地址范围或设置标记(Internet、虚拟网络、AzureLoadBalancer)。我认为 AzureLoadBalancer 会解决这个问题,但没有 - HDInsight 仍然隐藏在 Azure 数据工厂中。
我试图找到数据工厂端口范围,但没有成功。
有没有办法从 Azure 数据工厂访问安全的 HDInsight Linux 集群?
azure azure-virtual-network azure-data-factory azure-hdinsight
我正在尝试使用rest api 通过livy 提交spark 作业。但是,如果我多次运行相同的脚本,它会运行具有不同作业 ID 的作业的多个实例。我正在寻找一种方法,在开始新作业之前终止以相同名称运行的 Spark/Yarn 作业。Livy文档说(https://github.com/cloudera/livy#batch)删除批处理作业,但livy会话不返回应用程序名称,只返回应用程序id。
还有另一种方法可以做到这一点吗?
我正在 azure hdinsight Spark2 集群中安排具有以下结构的 oozie 作业。我使用以下命令安排了作业,
oozie job -config /job.properties -run
oozie job -config /coordinator.properties -run
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
Status: ERROR
Error Code: JA018
Error Message: Main class [org.apache.oozie.action.hadoop.ShellMain], exit code
Run Code Online (Sandbox Code Playgroud)
我的工作流程.xml 文件:
<workflow-app name="sparkshellwf" xmlns="uri:oozie:workflow:0.3">
<start to="sparkshellwf"/>
<action name="sparkshellwf">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>$SPARK_HOME/bin/spark-submit</exec>
<!--Adding all arguments needed/optional for Spark-submit here-->
<argument>--class</argument>
<argument>${Spark_Driver}</argument>
<argument>--master</argument>
<argument>${Spark_Master}</argument>
<argument>--deploy-mode</argument>
<argument>${Spark_Mode}</argument>
<argument>--num-executors</argument>
<argument>${numExecutors}</argument>
<argument>--driver-memory</argument>
<argument>${driverMemory}</argument>
<argument>--executor-memory</argument>
<argument>${executorMemory}</argument>
<argument>--executor-cores</argument>
<argument>${executorCores}</argument>
<argument>${workflowRoot}/lib/${sparkJar}</argument>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail"> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Azure 上的 HDInsight Spark 群集中安装 Azure CosmosDB Spark 连接器。( GitHub )
我是 spark 环境的新手,我无法找到将连接器 jar 添加到 spark 配置的正确方法。
我使用的方法:
方法 1 我将 jars 上传到与 HDInsight 群集关联的 Azure Blob 存储容器上。(到example/jars/)我与spark集群头节点建立了ssh连接并运行了以下命令:
spark-shell --master yarn --conf "spark.executor.extraClassPath="wasb:///example/jars/azure-cosmosdb-spark_2.0.2_2.11-0.0.3.jar" --conf "spar.driver.extraClassPath= "wasb:///example/jar/azure-cosmosdb-spark_2.0.2_2.11-0.0.3.jar"
Run Code Online (Sandbox Code Playgroud)
spark-shell 返回以下内容:
SPARK_MAJOR_VERSION is set to 2, using Spark2
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
17/10/19 15:10:48 WARN SparkContext: Use an existing SparkContext, some configuration may not take effect.
Spark context Web UI available at http://10.0.0.20:4040 …Run Code Online (Sandbox Code Playgroud) 在 Azure 中创建 HDInsights Hadoop 群集时,有两个存储选项。Azure 数据湖存储 (ADLS) 或 Azure Blob 存储。
这两个选项之间的真正区别是什么?它们如何影响性能?
我找到了这个页面https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-comparison-with-blob-storage 但它不是很具体,只使用很一般“ADLS 针对分析进行了优化”等术语。
这是否意味着它更适合存储 HDInsights 文件系统?如果 ADLS 确实更快,那么为什么不将它也用于非分析数据呢?
hadoop azure azure-blob-storage azure-data-lake azure-hdinsight
我正在尝试使用 Microsoft Azure 上的 PySpark HDInsight 集群来做一个机器学习项目。要在我的集群上进行操作,请使用 Jupyter 笔记本。另外,我的数据(csv 文件)存储在 Azure Blob 存储中。
根据文档,我的文件路径的语法是:
path = 'wasb[s]://springboard@6zpbt6muaorgs.blob.core.windows.net/movies_plus_genre_info_2.csv'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下命令读取 csv 文件时:
csvFile = spark.read.csv(path, header=True, inferSchema=True)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'java.net.URISyntaxException: Illegal character in scheme name at index 4: wasb[s]://springboard@6zpbt6muaorgs.blob.core.windows.net/movies_plus_genre_info_2.csv'
Run Code Online (Sandbox Code Playgroud)
这是笔记本中错误的屏幕截图:

有想法该怎么解决这个吗?
我需要从外部 java 应用程序连接到作为 Azure 上 HDinsight 的一部分启动的 Kafka 集群。我的集群包含 3 个代理实例、3 个 ZooKeeper 和 1 个 ZooKeeper 客户端。
现在我的问题:如何指定代理连接字符串。在管理面板上,我可以看到 3 个经纪人,例如:xxx-1.yyy.zzz.internal.cloudapp.net, xxx-2.yyy.zzz.internal.cloudapp.net- 但这些地址无法从外部获得。如果我尝试一下,我可以看到异常:
KafkaException:构建kafka消费者失败
...
ConfigException:bootstrap.servers 中的 URL 无效:xxx-1.yyy.zzz.internal.cloudapp.net
我正在尝试使用 Spark HDInsight 集群 (HDI 4.0) 通过 IntelliJ 运行远程 Spark 作业。在我的 Spark 应用程序中,我尝试使用 Spark 的结构化流内置readStream函数从 Azure blob 存储中的 parquet 文件文件夹中读取输入流。
当我在连接到 HDInsight 群集的 Zeppelin 笔记本上运行该代码时,该代码按预期工作。但是,当我将 Spark 应用程序部署到集群时,遇到以下错误:
java.lang.IllegalAccessError: class org.apache.hadoop.hdfs.web.HftpFileSystem cannot access its superinterface org.apache.hadoop.hdfs.web.TokenAspect$TokenManagementDelegator
随后,我无法从 blob 存储中读取任何数据。
网上查到的一点信息表明,这是由于Spark和Hadoop之间的版本冲突引起的。2.4该应用程序使用为 Hadoop 预构建的Spark 运行2.7。
为了解决这个问题,我通过 ssh 进入集群的每个头节点和工作节点,并手动将 Hadoop 依赖项降级为2.7.3from3.1.x以匹配本地spark/jars文件夹中的版本。完成此操作后,我就可以成功部署我的应用程序。无法将集群从 HDI 4.0 降级,因为它是唯一可以支持 Spark 的集群2.4。
总而言之,问题可能是我使用的是为 Hadoop 预构建的 Spark 下载吗2.7?有没有更好的方法来解决此冲突,而不是手动降级集群节点上的 Hadoop 版本或更改我正在使用的 Spark 版本?
hadoop scala apache-spark spark-structured-streaming azure-hdinsight