Azure Event Hubs ile Databricks Connect

Sep 30 2020

Kullanarak Databricks bazı Python kodunu çalıştırmak isterken sorunlarım yüzleşiyorum databricks-connectbu durumda (uzantısı yüklenmiş ve bir Maven bağlı com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17bulunan Azure EventHub ile entegrasyon için Databricks resmi belgeler

İle bağlantıyla ilgili olarak databricks-connect, her şey iyi ayarlanmış (ile "Tüm testler geçti" databricks-connect test). Maven paketi kümemin com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.17Kitaplıklar bölümünde "Yüklendi" görünüyor).

Hatalı kod bu basit bir satırdır:

encrypted_string = sc._jvm.org.apache.spark.eventhubs.EventHubsUtils.encrypt(to_be_encrypted_string)

Aşağıdaki hata yığınının üretilmesi:

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

Burada Maven paket kurulumuyla ilgili bariz bir şeyi mi kaçırıyorum? Python ile kullanmak için fazladan bir adım var mı? Yardımınız için teşekkürler !

Yanıtlar

3 nefo_x Sep 30 2020 at 04:30

İşlevselliğin bazı sınırlamaları vardır :

Aşağıdaki Databricks özellikleri ve üçüncü taraf platformları desteklenmemektedir:

  • Aşağıdaki Databricks Yardımcı Programları: kimlik bilgileri, kitaplık, dizüstü bilgisayar iş akışı ve gereçler.
  • Yapılandırılmış Akış (Azure Event Hubs dahil)
  • Uzak kümede bir Spark işinin parçası olmayan rastgele kod çalıştırma.
  • Delta tablo işlemleri için yerel Scala, Python ve R API'leri (örneğin, DeltaTable.forPath). Ancak, Delta Lake işlemlerine sahip SQL API (spark.sql (...)) ve Delta tablolarındaki normal Spark API (örneğin, spark.read.load) desteklenir.

Ayrıca, Databricks Connect ile tüm kitaplıkların yerel sınıf yolunda olması gerekir. Tipik senaryo, tüm Spark dışı bağımlılıkların, bağımlılıklar içeren kavanozlara paketlenmesidir.