Можем ли мы переместить данные в Vertica с помощью Spark и без использования hadoop в качестве промежуточной среды?

#apache-spark #hadoop #vertica

#apache-spark #hadoop #vertica

Вопрос:

я пытаюсь передавать данные в spark и загружать их в vertica, в каждой статье, на которую я ссылаюсь, говорится о том, что hdfs сначала сохраняет данные из DF или RDD, есть ли способ переместить данные без использования Hadoop и любого дополнительного хранилища данных

Комментарии:

1. Какую версию Spark вы используете? И какая версия Vertica?

Ответ №1:

Не с помощью соединителя Vertica для Apache Spark, к сожалению, для этого соединителя требуется, чтобы данные сначала записывались в HDFS.

Вы можете сохранять данные непосредственно в таблицу соединений JDBC из Spark с помощью df.write() .

 import org.apache.spark.sql.{SQLContext, SaveMode}

df.write
  .mode(SaveMode.Append)
  .format("jdbc")
  .option("url", "jdbc:vertica://vertica:5433/database")
  .option("dbtable", "schema.table")
  .option("user", "dbadmin")
  .option("password", "password")
  .save()
  

У меня это сработало при использовании Spark версии 2.2.1. Vertica версии 9.1.

Комментарии:

1. Спасибо, у меня spark 2.3, а Vertica — V9, в настоящее время я использую S3 для хранения данных в файлах, а затем загрузки в vertica, я тоже собираюсь попробовать этот подход, также не могли бы вы помочь мне понять, почему в большинстве статей не рекомендуется загружать их напрямую, а вместо этого использовать HDFS?

2. Честно говоря, я не уверен, почему рекомендуется сначала сохранять в HDFS.