Соединение PySpark JDBC с NetSuite2.com завершается с ошибкой «Не удалось войти в систему с использованием TBA» в DatabrJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Соединение PySpark JDBC с NetSuite2.com завершается с ошибкой «Не удалось войти в систему с использованием TBA» в Databr

Сообщение Anonymous »

Я столкнулся с проблемой при попытке подключиться к NetSuite2.com с помощью PySpark из блокнота Databricks с драйвером JDBC. Несмотря на успешную настройку соединения DBVisualizer с использованием тех же учетных данных, я получаю ошибку аутентификации при попытке подключения через PySpark.
Сведения о среде
  • Версия среды выполнения Databricks: 10.4 LTS (включает Apache Spark 3.2.1, Scala 2.12)
  • Драйвер NetSuite JDBC Версия: 2021.2
  • Версия PySpark: 3.2.1
Что я уже сделал
  • Успешное подключение к NetSuite с помощью DBVisualizer путем установки драйвера JDBC (JAR) и генерации пароля с одноразовым хешированием NONCE.
  • Попытка использовать тот же URL-адрес, JAR и пароль (с использованием NONCE) в PySpark внутри Databricks.
Ошибка
При запуске кода PySpark возникает следующая ошибка:

Код: Выделить всё

SparkException: Job aborted due to stage failure: Task 0 in stage 36.0 failed 4 times, most recent failure: Lost task 0.3 in stage 36.0 (TID ***) (*** executor 1): java.sql.SQLException: [NetSuite][SuiteAnalytics Connect JDBC Driver][OpenAccess SDK SQL Engine]Failed to login using TBA. Error ticket# m3z*********cp2f[232]
Мой код
Вот код PySpark, который я использую для установления соединения:

Код: Выделить всё

pwd = generate_tba_password(account_id, consumer_key, token_id, consumer_secret, token_secret)

# Construct the JDBC URL
jdbc_url = f"jdbc:ns://{host}:{port};ServerDataSource=NetSuite2.com;Encrypted=1;NegotiateSSLClose=false;" \
f"CustomProperties=(AccountID={account_id};RoleID={role_id};AuthType=TOKEN;" \
f"TokenID={token_id};TokenSecret={token_secret};ConsumerKey={consumer_key};ConsumerSecret={consumer_secret})"

# Read data from NetSuite
df = spark.read.format("jdbc") \
.option("url", jdbc_url) \
.option("User", "TBA") \
.option("Password", pwd) \
.option("driver", "com.netsuite.jdbc.openaccess.OpenAccessDriver") \
.option("dbtable", "customer") \
.load()

df.show()
Что я пробовал
  • Проверил, что функцияgenerate_tba_password создает правильный формат пароля.
  • Пробывал разные комбинации в строке CustomProperties, в том числе:
    • Удаление RoleID
    • Изменение AuthType на «NLAuth» вместо "TOKEN"
  • Убедился, что JAR-файл драйвера JDBC правильно установлен в среде Databricks.
Конкретные вопросы
  • Правильна ли конструкция URL-адреса JDBC для NetSuite при использовании PySpark?
  • Известны ли какие-либо проблемы с Аутентификация на основе токенов (TBA) в PySpark для подключений NetSuite?
  • Нужны ли какие-либо конфигурации Databricks для подключений NetSuite JDBC, которые отличаются от стандартных подключений JDBC?
  • Могут ли возникнуть проблемы с тем, как Databricks обрабатывает генерацию паролей на основе NONCE?
Любые идеи или предложения о том, как это сделать Будем очень признательны за устранение этой ошибки аутентификации. Заранее благодарю за помощь!


Подробнее здесь: https://stackoverflow.com/questions/792 ... -using-tba
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»