尝试使用 Databricks 和 SQL 创建 table 并将数据加载到相同的 table

Trying to create a table and load data into same table using Databricks and SQL

我在 Google 上搜索了创建 table 的解决方案,使用 Databticks 和 Azure SQL 服务器,并将数据加载到同一个 table 中。我在网上找到了一些示例代码,看起来很简单,但显然某处存在问题。这是我的代码。

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"
);

现在,这是我的错误。

Error in SQL statement: SQLServerException: Invalid object name 'MyTable'.

不幸的是,我的密码中有空格。也许这就是问题所在,但我不这么认为。

基本上,我想让它递归地循环遍历文件夹和子文件夹中的文件,并从具有字符串模式的文件中加载数据,例如 'ABC*',然后递归地将所有这些文件加载​​到一个table。这里的障碍是我还需要将文件名加载到字段中。所以,我想从许多文件中加载数据,将数据加载到 4 个实际数据字段和 1 个捕获文件名的字段中。我可以区分不同数据集的唯一方法是使用文件名。这可能吗?或者,这是徒劳的练习吗?

我的建议是使用 Azure SQL Spark 库,如文档中所述:

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

'Bulk Copy' 是您想要获得良好性能的方法。只需将文件加载到 DataFrame 并将其批量复制到 Azure SQL

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

要从子文件夹中读取文件,答案在这里:

我终于,终于,终于开始工作了。

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 指出正确的方向!!