如何在dataworks的datastudio中通过shell去执行odps sql或者编写datax同步脚本 有无案例借鉴?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DataWorks的DataStudio中,通过Shell执行ODPS SQL或编写DataX同步脚本是常见的需求。以下是详细的步骤和案例说明,帮助您完成相关操作。
在DataWorks中,可以通过Shell节点调用odpscmd
命令行工具来执行ODPS SQL语句。具体调用方式如下:
/opt/taobao/tbdpapp/odpswrapper/odpsconsole/bin/odpscmd \
-u <accessid> \
-p <accesskey> \
-project <project_name> \
-endpoint <endpoint_url> \
-e "SQL语句"
<accessid>
和 <accesskey>
:MaxCompute项目的访问凭证。<project_name>
:目标MaxCompute项目名称。<endpoint_url>
:MaxCompute服务的Endpoint地址。"SQL语句"
:需要执行的SQL语句。注意:请确保替换上述参数为实际值,并确认Shell节点运行环境已安装odpscmd
工具。
以下是一个通过Shell节点执行ODPS SQL的示例:
/opt/taobao/tbdpapp/odpswrapper/odpsconsole/bin/odpscmd \
-u test_accessid \
-p test_accesskey \
-project test_project \
-endpoint http://service.odps.aliyun.com/api \
-e "INSERT INTO students PARTITION(gender='boy') VALUES (1,'张三',15,DATE '2008-05-15');"
此示例将向students
表插入一条数据。
DataX是阿里云提供的高效数据同步工具,支持多种数据源之间的数据迁移。在DataWorks中,可以通过脚本模式配置DataX同步任务,具体步骤如下:
创建离线同步节点:
编辑脚本:
保存并运行:
以下是一个通过脚本模式配置DataX同步任务的示例,用于将MaxCompute数据同步至MySQL:
{
"job": {
"content": [
{
"reader": {
"name": "odpsreader",
"parameter": {
"partition": ["ds=20231001"],
"datasource": "odps_first",
"column": ["*"],
"table": "source_table"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"datasource": "mysql_first",
"column": ["id", "name", "age"],
"table": "target_table"
}
}
}
],
"setting": {
"speed": {
"channel": 3
}
}
}
}
reader
:定义数据读取端,此处为MaxCompute数据源。writer
:定义数据写入端,此处为MySQL数据源。partition
:指定MaxCompute表的分区信息。column
:指定需要同步的字段。channel
:设置并发通道数以控制同步速度。注意:确保数据源已在DataWorks中正确配置,并且网络连通性正常。
假设需要定期清理MaxCompute中的历史数据,可以通过Shell节点执行以下SQL:
/opt/taobao/tbdpapp/odpswrapper/odpsconsole/bin/odpscmd \
-u test_accessid \
-p test_accesskey \
-project test_project \
-endpoint http://service.odps.aliyun.com/api \
-e "DELETE FROM history_data WHERE ds < '20230101';"
此脚本会删除history_data
表中早于2023年1月1日的数据。
假设需要将MaxCompute中的日志数据同步至MySQL进行分析,可以使用以下脚本:
{
"job": {
"content": [
{
"reader": {
"name": "odpsreader",
"parameter": {
"partition": ["ds=20231001"],
"datasource": "odps_log",
"column": ["log_id", "log_time", "log_content"],
"table": "log_table"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"datasource": "mysql_analysis",
"column": ["id", "time", "content"],
"table": "analysis_table"
}
}
}
],
"setting": {
"speed": {
"channel": 5
}
}
}
}
此脚本将log_table
表中的日志数据同步至MySQL的analysis_table
表中。
通过以上步骤和案例,您可以轻松在DataWorks的DataStudio中通过Shell执行ODPS SQL或编写DataX同步脚本。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。