Databricks 与 Azure 事件中心连接
Databricks Connect with Azure Event Hubs
我在尝试 运行 使用 databricks-connect
在 Databricks 上编写一些 Python 代码时遇到问题,这取决于 Maven 安装的扩展(在本例中 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17
找到在 Databricks official documentation for integration with Azure EventHub
关于与 databricks-connect
的连接,一切都设置良好(databricks-connect test
得到“所有测试已通过”)。 Maven 包 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17
似乎已“安装”在我集群的库部分。
错误的代码是这个简单的一行代码:
encrypted_string = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(to_be_encrypted_string)
产生以下错误堆栈:
INFO - Receiving data from EventHub using Databricks' PySpark...
20/09/29 17:50:57 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
20/09/29 17:50:59 WARN MetricsSystem: Using default name SparkStatusTracker for source because neither spark.metrics.namespace nor spark.app.id is set.
Traceback (most recent call last):
File "C:\Users\my_user\Desktop\projectABC\src\my_folder\my_project\cli.py", line 86, in <module>
connector()
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Users\my_user\Desktop\projectABC\src\my_folder\my_project\cli.py", line 43, in test_data_process
prediction_connector.process_upstream_data()
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 224, in process_upstream_data
df = eventhub_consumer.receive_data_with_pyspark()
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 406, in receive_data_with_pyspark
eventhub_config = self._populate_pyspark_eventhub_config_file(spark_context=sc)
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 428, in _populate_pyspark_eventhub_config_file
eventhub_config = {'eventhubs.connectionString': spark_context._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(self.config.connection_string)}
TypeError: 'JavaPackage' object is not callable
我是否遗漏了一些关于 Maven 包安装的明显信息?将它与 Python 一起使用是否有额外的步骤?感谢您的帮助!
功能有一些limitations:
不支持以下 Databricks 功能和 third-party 平台:
- 以下 Databricks 实用程序:凭据、库、笔记本工作流和小部件。
- 结构化流(包括 Azure 事件中心)
- 运行 不属于远程集群上 Spark 作业的任意代码。
- Native Scala、Python 和用于 Delta table 操作的 R APIs(例如,DeltaTable.forPath)。但是,具有 Delta Lake 操作的 SQL API (spark.sql(...)) 和 Delta 上的常规 Spark API(例如,spark.read.load) table 均受支持。
此外,对于 Databricks Connect,您还必须在本地类路径中拥有所有库。典型的场景是当所有 non-Spark 依赖被打包成 jar-with-dependencies.
我在尝试 运行 使用 databricks-connect
在 Databricks 上编写一些 Python 代码时遇到问题,这取决于 Maven 安装的扩展(在本例中 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17
找到在 Databricks official documentation for integration with Azure EventHub
关于与 databricks-connect
的连接,一切都设置良好(databricks-connect test
得到“所有测试已通过”)。 Maven 包 com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17
似乎已“安装”在我集群的库部分。
错误的代码是这个简单的一行代码:
encrypted_string = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(to_be_encrypted_string)
产生以下错误堆栈:
INFO - Receiving data from EventHub using Databricks' PySpark...
20/09/29 17:50:57 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
20/09/29 17:50:59 WARN MetricsSystem: Using default name SparkStatusTracker for source because neither spark.metrics.namespace nor spark.app.id is set.
Traceback (most recent call last):
File "C:\Users\my_user\Desktop\projectABC\src\my_folder\my_project\cli.py", line 86, in <module>
connector()
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\my_user\Desktop\projectABC\.venv\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Users\my_user\Desktop\projectABC\src\my_folder\my_project\cli.py", line 43, in test_data_process
prediction_connector.process_upstream_data()
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 224, in process_upstream_data
df = eventhub_consumer.receive_data_with_pyspark()
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 406, in receive_data_with_pyspark
eventhub_config = self._populate_pyspark_eventhub_config_file(spark_context=sc)
File "c:\users\my_user\Desktop\projectABC\src\my_folder\my_project\command.py", line 428, in _populate_pyspark_eventhub_config_file
eventhub_config = {'eventhubs.connectionString': spark_context._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(self.config.connection_string)}
TypeError: 'JavaPackage' object is not callable
我是否遗漏了一些关于 Maven 包安装的明显信息?将它与 Python 一起使用是否有额外的步骤?感谢您的帮助!
功能有一些limitations:
不支持以下 Databricks 功能和 third-party 平台:
- 以下 Databricks 实用程序:凭据、库、笔记本工作流和小部件。
- 结构化流(包括 Azure 事件中心)
- 运行 不属于远程集群上 Spark 作业的任意代码。
- Native Scala、Python 和用于 Delta table 操作的 R APIs(例如,DeltaTable.forPath)。但是,具有 Delta Lake 操作的 SQL API (spark.sql(...)) 和 Delta 上的常规 Spark API(例如,spark.read.load) table 均受支持。
此外,对于 Databricks Connect,您还必须在本地类路径中拥有所有库。典型的场景是当所有 non-Spark 依赖被打包成 jar-with-dependencies.