我可以写成镶木地板格式并按照这样的列进行分区:
jobname = args['JOB_NAME']
#header is a spark DataFrame
header.repartition(1).write.parquet('s3://bucket/aws-glue/{}/header/'.format(jobname), 'append', partitionBy='date')
但我无法使用Glue的DynamicFrame执行此操作。
header_tmp = DynamicFrame.fromDF(header, glueContext, "header")
glueContext.write_dynamic_frame.from_options(frame = header_tmp, connection_type = "s3", connection_options = {"path": 's3://bucket/output/header/'}, format = "parquet")
我已经尝试将partitionBy
作为connection_options
字典的一部分传递,因为AWS文档说镶嵌胶水不支持任何格式选项,但这不起作用。
这可能,怎么样?至于这样做的原因,我认为工作书签需要工作,因为这对我目前不起作用。
答案 0 :(得分:4)
来自AWS Support(稍微复述):
截至今天,Glue在写入镶木地板时不支持partitionBy参数。尽管如此,这仍在进行中。
使用Glue API写入镶木地板是必需的,用于工作书签功能以使用S3源。
截至今天,无法对镶木地板文件进行分区 AND 启用作业书签功能。
编辑:今天(3/23/18)我在documentations找到了
glue_context.write_dynamic_frame.from_options(
frame = projectedEvents,
connection_options = {"path": "$outpath", "partitionKeys": ["type"]},
format = "parquet")
该选项可能一直存在,我和AWS支持人员都错过了它,或者它最近才被添加。无论哪种方式,现在似乎都有可能。
答案 1 :(得分:1)
我将数据框中的某些列用作partionkeys对象:
<!-- :
@echo off && mode 50,03 && title <nul && title .\%~nx0
start /d "c:\Program Files (x86)\Google\Chrome\Application\" chrome.exe -new-tab "www.youtube.com/watch?v=BISQwNjP2NE"
%__APPDIR__%wScript.exe "%~dpnx0?.wsf" && goto :EOF
--> <job> <script language = "vbscript">
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate "chrome"
WScript.Sleep 4000
objShell.SendKeys " " ' use space (charater) to play/pause
'objShell.SendKeys ("+{F10}") left click | in your question, the
'objShell.SendKeys "{DOWN}" left click | left click is not works
'objShell.SendKeys "{ENTER}" left click | for play the video
</script></job>