摘要: 分别描述使用MaxCompute Tunnel命令行工具上传数据的数据类、网络类、计费类问题,长期更新,欢迎大家拍砖~~
数据问题
Q:使用Tunnel Java SDK上传数据,上传数据可以自动分配到各个分区吗?
A:目前Tunnel是无法自动上传数据并自动分配到各个分区的:每一次上传只支持数据上传到一张表或表的一个分区,有分区的表一定要指定上传的分区,多级分区一定要指定到末级分区。关于JAVA SDK可参考:Java SDK。
Q:使用Tunnel Java SDK上传数据,如果是分区表,SDK能够动态根据数据创建不同的分区吗?
A:分区需要首先创建好,在使用SDK上传数据时指定。您也可以先把数据上传到MaxCompute上的表中,再用SQL语句动态分区。
Q:使用Tunnel命令行tunnel upload D:\test test/pt="time"
在 DataIDE上进行分区上传为什么报错:FAILED: error occurred while running tunnel command
?
A:DataIDE是不支持MaxCompute Tunnel命令行工具的upload语句的。
Q:利用Tunnel命令行工具上传数据时,共分为50个block,开始一切正常,但是在第22个block时,出现Upload fail,retry 5次后,直接跳过开始上传第23个block,为什么会发生这种情况?
A:Block 的概念:一个 block 对应一个HTTP request,多个 block 的上传可以并发而且是原子的,一次同步请求要么成功要么失败,不会污染其他的 block。
重传retry有次数的限制的,当重传的次数超过了这个限制,就会继续上传下一个block。上传完成后,可以通过select count(*)
语句,检查是否有数据丢失。
Q:本地服务器每天采集的网站日志有10GB,需要上传至MaxCompute,在使用Tunnel Upload命令上传达到的速度约300KB/S 如何提升上传速度?
A:Tunnel Upload命令上传是不设速度限制的。上传速度的瓶颈在网络带宽以及服务器性能。为了提升性能,可以考虑分区分表,在多台ECS上传下载数据。
Q:如何在Shell脚本中将一个TXT文件中的数据上传到MaxCompute的表中, 即把这两条命令组合成一条?命令如下:
/odpscmd/bin/odpscmd
tunnel upload "$FILE" project.table
A:可参考客户端设置命令行客户端的启动参数,在Shell中启动命令是:/odpscmd/bin/odpscmd -e “tunnel upload "$FILE" project.table”
Q:MaxCompute使用TunnelUpload命令上传数据,如果数据里面有回车或空格为什么上传失败?
A:如果数据里有回车或空格,可以给数据设置不同与回车或空格的分隔符后,用-rd和-fd指定对应的分隔符实现数据的上传。如果无法更换数据中的分隔符,可以将数据作为单独一行上传,然后使用UDF解析。
例如下列数据中包含回车,使用“,”作为列分隔符rd,使用“@”作为行分隔符fd,可以正常上传:
数据内容:
shopx,x_id,100@
shopy,y_id,200@
shopz,z_i
d,300@
上传命令:odps@ MaxCompute_DOC>tunnel u d:\data.txt sale_detail/sale_date=201312,region=hangzhou -s false -fd "," -rd "@";
上传结果:
+-----------+-------------+-------------+-----------+--------+
| shop_name | customer_id | total_price | sale_date | region |
+-----------+-------------+-------------+-----------+--------+
| shopx | x_id | 100.0 | 201312 | hangzhou |
| shopy | y_id | 200.0 | 201312 | hangzhou |
| shopz | z_id
d