标签: azure-hdinsight

如何从 Jupyter 在 HDInsight Spark 群集上提交 python 字数统计

我正在尝试在 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

5
推荐指数
1
解决办法
1414
查看次数

Azure 数据工厂无法访问 IP 受限 VNet 中的 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

5
推荐指数
1
解决办法
1135
查看次数

如何通过 livy 终止 Spark/Yarn 工作

我正在尝试使用rest api 通过livy 提交spark 作业。但是,如果我多次运行相同的脚本,它会运行具有不同作业 ID 的作业的多个实例。我正在寻找一种方法,在开始新作业之前终止以相同名称运行的 Spark/Yarn 作业。Livy文档说(https://github.com/cloudera/livy#batch)删除批处理作业,但livy会话不返回应用程序名称,只返回应用程序id。

还有另一种方法可以做到这一点吗?

rest azure livy azure-hdinsight

5
推荐指数
1
解决办法
8727
查看次数

错误代码:JA018 在 HDInsight Spark2 群集中运行 Oozie 工作流

我正在 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 oozie apache-spark oozie-coordinator azure-hdinsight

5
推荐指数
1
解决办法
6165
查看次数

如何在 HDInsight 中添加外部 jar 以激发火花?

我正在尝试在 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)

java azure apache-spark pyspark azure-hdinsight

5
推荐指数
1
解决办法
1112
查看次数

在 Azure 上的 HDInsights 群集上使用数据湖或 Blob

在 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

5
推荐指数
0
解决办法
1650
查看次数

使用 PySpark 从 azure blob 存储读取 csv 文件

我正在尝试使用 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)

这是笔记本中错误的屏幕截图: 错误截图

有想法该怎么解决这个吗?

azure azure-storage apache-spark pyspark azure-hdinsight

5
推荐指数
1
解决办法
9422
查看次数

连接到 HDInsight (Azure) 上安装的 Kafka

我需要从外部 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

java azure apache-kafka azure-hdinsight

5
推荐指数
1
解决办法
2238
查看次数

通过远程 Spark 作业时出错:java.lang.IllegalAccessError: class org.apache.hadoop.hdfs.web.HftpFileSystem

问题

我正在尝试使用 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

4
推荐指数
1
解决办法
9494
查看次数