1.如果自己不小心手动删除数据无法提供恢复,如果是普通表,是没法恢复数据的。外部表可以配置到OSS上面,数据不会删除。
2.用户删除行为,所有的副本也会删除的。如果是产品故障导致丢失,一般所有副本丢失的可能性并不大(可以提工单咨询)。
3.UDF由于沙箱限制,不支持请求外部链接
4.不能实现的函数全部建议UDF
5.客户端乱码的换考虑将use_instance_tunnel改为false
6.pyodps查询最多10000条。
SDK和API请求的话可设置:options.tunnel.use_instance_tunnel = True,并且设置options.tunnel.limit_instance_tunnel = false
7.自定义UDF的时候,类名必须写正确,要不然会报解析错误
8.UDF的找不到参数、函数名问题参考:https://yq.aliyun.com/articles/684417?spm=a2c4e.11155435.0.0.192a3312uElBdJ
9.使用like 如果like字段包含下划线_ ,不会生效,建议使用rlike + 正则的方式。
10.Tunnel命令不支持上传下载Array、Map和Struct类型的数据。推荐使用insert into table xxx select xxx
11.2147483647是int型最大的数,id到顶了,不适合有自增id
12.如果没有输入表,map 及 reduce任务实际上不执行的,输入可以为空,但是底层的map 及 reduce实际是不会执行的。没有数据正常不会分配map/reduce task的,通常是一个block分配一个map任务去处理。这个并没有什么方式可以解决的。实际上也没人这么使用,没有数据运行MR任务本身就是一种浪费。
13.查询外部表报错:
FAILED: ODPS-0123131:User defined function exception - Traceback:
java.lang.IndexOutOfBoundsException
at java.io.BufferedInputStream.read(BufferedInputStream.java:338)
1)、麻烦确认路径下有空文件,导致读取的时候报错。
2)、对于外部表,当前不支持单个文件超过2G,否则会报错
OSS数量量大的话,需要考虑并行,建议您使用分区,避免全表扫描。
14.在dataworks运行spark报错:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.SubmitJob.main(SubmitJob.java:74)
Caused by: org.apache.hadoop.yarn.exceptions.YarnException: com.aliyun.odps.cupid.CupidException: This cupid task type not allowed in your project: spark-default
at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.submitApplication(YarnClientImpl.java:180)
at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:175)
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1172)
at org.apache.spark.deploy.yarn.YarnClusterApplication.start(Client.scala:1542)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:881)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:197)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:227)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:136)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
... 5 more
Caused by: com.aliyun.odps.cupid.CupidException: This cupid task type not allowed in your project: spark-default
at com.aliyun.odps.cupid.CupidUtil.errMsg2SparkException(CupidUtil.java:43)
at com.aliyun.odps.cupid.CupidUtil.getResult(CupidUtil.java:123)
at com.aliyun.odps.cupid.requestcupid.YarnClientImplUtil.transformAppCtxAndStartAM(YarnClientImplUtil.java:291)
at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.submitApplication(YarnClientImpl.java:178)
... 13 more
需加一下这个配置 spark.hadoop.odps.task.major.version = cupid_v2