我对 Azure 还不太熟悉,我想知道什么时候建议使用 ADF、Synapse 或 DataBricks。他们的最佳实践和性能用例是什么?
你能帮我解决这个理论问题吗?
干杯!
我使用 SQL Server 管理工作室生成针对 Azure 数据仓库的脚本。我选择了版本 Azure 数据仓库,它在脚本下方生成以删除表(如果存在)并创建表。但是,脚本无法通过验证。请参阅下面的错误消息。
DROP TABLE IF EXISTS Table1
GO
Run Code Online (Sandbox Code Playgroud)
错误信息:
第 2 行解析错误,第 12 列:“IF”附近的语法不正确。
azure-sqldw azure-sql-database azure-sql-data-warehouse azure-synapse
我已经安装了:
我只想使用 SQLAlchemy 和 Azure SQL 数据仓库创建一个概念证明。但是,当我尝试使用以下代码对映射到客户视图表的客户模型运行查询时:
import urllib
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
db_username = 'username'
db_password = 'password'
db_database = 'dbname'
db_hostname = 'dbhost'
db_driver = 'ODBC Driver 17 for SQL Server'
db_port = '1433'
db_connectionString = f"DRIVER={{{db_driver}}}; SERVER={{{db_hostname}}}; DATABASE={{{db_database}}}; UID={{{db_username}}}; PWD={{{db_password}}}; PORT={{{db_port}}};"
engine_params = urllib.parse.quote_plus(db_connectionString)
engine = create_engine(f"mssql+pyodbc:///?odbc_connect={engine_params}", echo=True) …
Run Code Online (Sandbox Code Playgroud) 我在 Azure synapse Analytics 中使用 pyspark 代码创建了 3 个不同的笔记本。笔记本正在使用 Spark 池运行。所有 3 台笔记本都只有一个 Spark 池。当这 3 个笔记本单独运行时,默认情况下,Spark 池会为所有 3 个笔记本启动。
我面临的问题与火花池有关。每个笔记本启动需要 10 分钟。分配的 Vcore 是 4,执行器是 1。有人可以帮我知道如何在 azure synapse Analytics 中提高 Spark 池的启动吗?
我正在寻找 Synapse Spark 中的 databricks 等效属性。请告诉我是否有任何相同的问题或解决方法。
使用 MERGE 命令插入/更新数据。但是,它不支持架构合并。是否有任何属性可以启用自动合并?Databricks 中的spark.conf.set("spark.databricks.delta.schema.autoMerge.enabled","true")
如何使用 delta Merge 命令控制部分文件的数量或优化写入?设置spark.databricks.delta.properties.defaults.autoOptimize.optimizeWrite = true; 设置spark.databricks.delta.properties.defaults.autoOptimize.autoCompact = true;
我想从 Azure Databricks 笔记本环境填充 Azure SQL DW。我正在使用 pyspark 的内置连接器:
sdf.write \
.format("com.databricks.spark.sqldw") \
.option("forwardSparkAzureStorageCredentials", "true") \
.option("dbTable", "test_table") \
.option("url", url) \
.option("tempDir", temp_dir) \
.save()
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我包含内容足够长的字符串列时,我会收到错误。我收到以下错误:
Py4JJavaError:调用 o1252.save 时发生错误。:com.databricks.spark.sqldw.SqlDWSideException:SQL DW 无法执行连接器生成的 JDBC 查询。
底层 SQLException: - com.microsoft.sqlserver.jdbc.SQLServerException:HdfsBridge::recordReaderFillBuffer - 填充记录读取器缓冲区时遇到意外错误:HadoopSqlException:字符串或二进制数据将被截断。[错误代码 = 107090] [SQLState = S0001]
据我了解,这是因为默认字符串类型是 NVARCHAR(256)。可以配置(参考),但最大 NVARCHAR 长度为 4k 个字符。我的字符串有时会达到 10k 个字符。因此,我很好奇如何将某些列导出为文本/长文本。
我猜想,如果仅preActions
在创建表后执行,则以下内容会起作用。事实并非如此,因此它失败了。
sdf.write \
.format("com.databricks.spark.sqldw") \
.option("forwardSparkAzureStorageCredentials", "true") \
.option("dbTable", "test_table") \
.option("url", url) \
.option("tempDir", temp_dir) \
.option("preActions", "ALTER TABLE test_table ALTER …
Run Code Online (Sandbox Code Playgroud) 在 Databricks 的 Scala 语言中,命令dbutils.fs.ls列出目录的内容。但是,我正在 Azure Synapse 中的笔记本上工作,它没有 dbutils 包。dbutils.fs.ls 对应的 Spark 命令是什么?
%%scala
dbutils.fs.ls("abfss://container@datalake.dfs.core.windows.net/outputs/wrangleddata")
Run Code Online (Sandbox Code Playgroud)
%%spark
// list the content of a directory. ????
Run Code Online (Sandbox Code Playgroud) 我使用 Azure Synapse Analytics 笔记本连接到 RESTful api,并将 json 文件写入 Azure Data Lake Storage Gen 2。
pyspark代码:
import requests
response = requests.get('https://api.web.com/v1/data.json')
data = response.json()
from pyspark.sql import *
df = spark.read.json(sc.parallelize([data]))
from pyspark.sql.types import *
account_name = "name of account"
container_name = "name of container"
relative_path = "name of file path" #abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)
spark.conf.set('fs.%s@%s.dfs.core.windows.net/%s' % (container_name, account_name), "account_key") #not sure I'm doing the configuration right
df.write.mode("overwrite").json(adls_path)
Run Code Online (Sandbox Code Playgroud)
错误:
Py4JJavaError : An error occurred while calling …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Synapse 管道中的笔记本活动来执行 Azure Synapse 笔记本,但在调试管道时不断出现错误,笔记本正在使用,TokenLibrary.getSecret()
并且看起来访问密钥保管库是问题所在。
笔记本在执行时运行良好,当添加为管道活动时,会出现错误。
密钥保管库访问策略设置为让我和 Synapse 应用程序获取并列出秘密。
非常感谢您提前提供的任何帮助。马里尤什
参考错误消息:
Microsoft Azure
Synapse Analytics
Search
/
feature/fixError6002 branch
Develop
Filter resources by name
SQL scripts
1
Notebooks
40
Data flows
1
Activities
Search activities
Synapse
Move & transform
Azure Data Explorer
Azure Function
Batch Service
Databricks
Data Lake Analytics
General
HDInsight
Iteration & conditionals
Machine Learning
Pipeline run ID:
58ff181a-37e6-47b8-b3d8-fe94295b9ec7
View debug run consumption
Name
Type
Run start
Duration
Status
Integration runtime
Run ID
Invoke Notebook …
Run Code Online (Sandbox Code Playgroud) runtime-error azure-data-factory azure-keyvault azure-synapse
azure-synapse ×10
pyspark ×3
apache-spark ×2
azure ×2
python ×2
azure-sqldw ×1
databricks ×1
msodbcsql17 ×1
pyodbc ×1
scala ×1
sql ×1
sqlalchemy ×1
ssms ×1