尝试使用 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 库,如文档中所述:
'Bulk Copy' 是您想要获得良好性能的方法。只需将文件加载到 DataFrame 并将其批量复制到 Azure SQL
要从子文件夹中读取文件,答案在这里:
我终于,终于,终于开始工作了。
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 指出正确的方向!!
我在 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 库,如文档中所述:
'Bulk Copy' 是您想要获得良好性能的方法。只需将文件加载到 DataFrame 并将其批量复制到 Azure SQL
要从子文件夹中读取文件,答案在这里:
我终于,终于,终于开始工作了。
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 指出正确的方向!!