我试图了解Google的Big查询和Azure数据Lake U-SQL之间的区别或优缺点.哪个更好 ?我已经详尽地搜索了最大的区别但却无法找到它.
azure google-bigquery google-cloud-platform azure-data-lake u-sql
我们如何在执行作业时根据时间戳在azure数据湖中的u-sql中获得动态输出文件名.谢谢帮助.我的代码如下:
OUTPUT @telDataResult
TO
@"wasb://blobcontainer@blobstorage.blob.core.windows.net/**yyyymmdd**_TelDataOutput.Csv"
USING Outputters.Csv();
Run Code Online (Sandbox Code Playgroud) 我们已经有了Move-AzureRmDataLakeStoreItem在Azure datalake中的文件夹之间移动文件.我想要的是复制数据池中的文件而不影响原始文件.
我知道的可能性是 -
USQL到EXTRACT从的资源文件,然后数据OUTPUT到destinationfile -但我试图复制的所有排序文件(.广州,txt文件,.INFO,名为.exe,.msi)的,我不知道是否USQL能帮助我以.gz或.exe或.msi文件Data Factory将数据从/到复制Data Lake store所以,我在这里问的是,我们还可以使用其他任何东西来管理Azure Data Lake Store中的文件副本吗?
我有一个处理压缩文件的u-sql作业有一个奇怪的问题。如果我在普通的csv文件上运行u-sql,则工作正常。但是,如果我对该文件进行gzip压缩,它将不再起作用(生成E_RUNTIME_USER_EXTRACT_ENCODING_ERROR:在顶点的输入拆分中处理0条记录后,发生编码错误。)
所以有效的代码是
DECLARE @path string = "output/{ids}/{*}.csv";
@data =
EXTRACT
a string,
b string,
c string,
d string,
ids string
FROM @path
USING
Extractors.Csv(skipFirstNRows:1, silent: true);
@output =
SELECT *
FROM @data
WHERE ids == "test";
OUTPUT @output
TO "output/res.csv"
USING Outputters.Csv(quoting : false, outputHeader: true);
Run Code Online (Sandbox Code Playgroud)
此代码不起作用(文件的gz版本)
DECLARE @path string = "output/{ids}/{*}.csv.gz";
@data =
EXTRACT
a string,
b string,
c string,
d string,
ids string
FROM @path
USING
Extractors.Csv(skipFirstNRows:1, silent: true);
@output =
SELECT *
FROM @data
WHERE ids == …Run Code Online (Sandbox Code Playgroud) 我是Azure中的U-SQL新手(我对SQL Server非常熟悉)并且无法弄清楚如何查看查询的输出.
我能找到的所有示例都涉及通过输出器将结果写入文件.
我是否需要将所有内容都推送到桌面以供查看,Data Explorer或者是否有办法将输出输出到结果窗口中SSMS?
注意 - 我正在使用Visual Studio 2017的免费版本.
我试图通过在数据湖分析中使用U-SQL将列拆分为两个.在SQL中可以这样做:
,CASE WHEN [Total] like '%-%'
THEN TRIM(LEFT([Total],CHARINDEX('-',[Total]) - 1)) END AS [TotalLeft]
,TRIM(REPLACE(SUBSTRING([Total],CHARINDEX('-',[Total]),LEN([Total])),'-','')) AS TotalRight
Run Code Online (Sandbox Code Playgroud)
我在U-SQL中尝试了类似的东西,但似乎在U-SQL中不存在LEFT.
([Total] LIKE "%-%") ? Left([Total].IndexOf("-"), 1).Trim : 0 AS TotalLeft,
Run Code Online (Sandbox Code Playgroud)
我读到了使用数组和EXPLODE,但这似乎只是将它分成更多行而不是列.
此外,我正在考虑使用EXTRACT并将分隔符设置为" - ",但这似乎也不是一个选项.
任何人都对如何有效地解决这个问题有任何想法?谢谢!
我正处于使用Azure数据仓库中的外部表从Azure Data Lake读取的位置.
这使我们能够使用众所周知的SQL从数据湖中读取数据.
但是,另一种选择是使用Data Lake Analytics或HDInsight的某些变体.
表现明智,我没有看到太多差异.我假设数据仓库在后台运行某种形式的分布式查询,转换为U-SQL(?),那么我们为什么要使用稍微不同的U-SQL语法的Data Lake Analytics?
由于SQL中也提供了python脚本,我觉得我缺少Data Lake Analytics的主要目的,除了成本(按批次工作付费,而不是数据库的恒定运行时间).
有没有办法自动化数据湖分析工作并按计划运行它们?
我一直在更新分区表的Azure Data Lake上运行U-SQL作业,它们成功运行,但是在“完成”阶段失败,并显示错误“ JM_FinalMetadataOperationUserError”,堆栈跟踪如下:
Object ec2d8ab3-6df5-48eb-9169-daec48bf27a6.DeployedLogs.dbo.ConcurrentRecord__1__System.DateTime.FromBinary
(5246322962427387904 /* 2012-02-01T12:00:00.0000000Z */)
already exists at Scope.MetadataService.Client.WcfBasedMetadataClient.ExecuteMetadataJob(MetadataJob mdJob)
at MetaDataExecutor.RealMetaDataExecutor.Execute(MetadataJob job)
at MetaDataExecutor.Committer.Commit(MetadataJob job)
Run Code Online (Sandbox Code Playgroud)
错误消息指出:
Failed to write job meta-data due to user error
Run Code Online (Sandbox Code Playgroud)
什么会导致此问题?是由于从表中添加/截断了值吗?
希望能有所帮助。