Попытка создать таблицу и загрузить данные в одну таблицу, используя Databricks и SQL - PullRequest
0 голосов
/ 08 октября 2019

Я нашел решение для создания таблицы с использованием Databticks и Azure SQL Server и загрузки данных в эту же таблицу. В сети я нашел пример кода, который кажется довольно простым, но, очевидно, где-то есть проблема. Вот мой код.

CREATE TABLE MyTable
USING org.apache.spark.sql.jdbc 
OPTIONS (
  url "jdbc:sqlserver://server_name_here.database.windows.net:1433;database = db_name_here",
  user "u_name",
  password "p_wd",
  dbtable "MyTable"
);

Теперь вот моя ошибка.

Ошибка в выражении SQL: SQLServerException: недопустимое имя объекта «MyTable».

К сожалению, в моем пароле есть пробелы. Возможно, это может быть проблемой, но я так не думаю.

По сути, я хотел бы получить это для рекурсивного циклического просмотра файлов в папке и подпапках и загрузки данных из файлов с помощьюшаблон строки, например 'ABC *', и рекурсивно загрузите все эти файлы в таблицу. Блокировщик в том, что мне нужно также загрузить имя файла в поле. Итак, я хочу загрузить данные из МНОГИХ файлов, в 4 поля фактических данных и 1 поле, содержащее имя файла. Единственный способ отличить разные наборы данных - это имя файла. Это возможно? Или это бесполезное упражнение?

Ответы [ 2 ]

1 голос
/ 08 октября 2019

я предлагаю использовать библиотеку Azure SQL Spark, как также упоминалось в документации:

https://docs.databricks.com/spark/latest/data-sources/sql-databases-azure.html#connect-to-spark-using-this-library

«Массовое копирование» - это то, что вы хотите использовать дляиметь хорошие выступления. Просто загрузите ваш файл в DataFrame и массово скопируйте его в Azure SQL

https://docs.databricks.com/data/data-sources/sql-databases-azure.html#bulk-copy-to-azure-sql-database-or-sql-server

Чтобы прочитать файлы из подпапок, ответ здесь:

Какимпортировать несколько CSV-файлов за одну загрузку?

0 голосов
/ 09 октября 2019

Наконец-то, наконец-то, наконец-то все заработало.

val myDFCsv = spark.read.format("csv")
   .option("sep","|")
   .option("inferSchema","true")
   .option("header","false")
   .load("mnt/rawdata/2019/01/01/client/ABC*.gz")

myDFCsv.show()
myDFCsv.count()

Спасибо за точку в правильном направлении, mauridb !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...