可能是由于EMR集群和Pandas版本的不兼容性导致的。需要升级EMR集群的Pandas版本。
在EMR集群的Bootstrap Actions中,添加以下命令:
sudo /usr/bin/pip-3.4 install pandas --upgrade
此外,为了确保在EMR集群上可靠地运行Pandas,还需要在创建集群时启用Hadoop Streaming Jar和Pandas依赖项:
aws emr create-cluster --release-label emr-5.24.0 --applications Name=Hadoop Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --bootstrap-actions Path=s3://mybucket/my-bootstrap-action.sh --configurations https://s3-us-west-2.amazonaws.com/mybucket/my-configuration.json --steps Type=Spark,Name="Spark program",ActionOnFailure=CONTINUE,Args=[--deploy-mode,cluster,--master,yarn,--conf,spark.yarn.submit.waitAppCompletion=false,--conf,spark.hadoop.mapreduce.job.outputformat.class=com.amazonaws.emr.spark.EmrParquetOutputFormat,--conf,spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true,--conf,spark.hadoop.fs.s3.consistent.retry.count=10,--conf,spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2,--conf,spark.speculation=true,--conf,spark.sql.parquet.compression.codec=snappy,--jars,s3://mybucket/my-jar.jar],Jar=s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/my-deploy-script.sh"],ActionOnFailure=CONTINUE,Name="Deploy script"
其中,“mybootstrap-action.sh”和“my-configuration.json”是启动Bootstrap Actions以及添加AWS支持的Pandas依赖项的脚本。
最后,重启EMR群集并重新运行Pandas UDF。