apache-spark - java spark withColumn绑定属性错误
问题描述
在 java 中调用 spark udf 时出现“TreeNodeException:绑定属性,树:visit_datetime#161”错误
火花版本:'2.3.0' java 版本:'1.8.0'
java伪代码
udfs.put(function.name + "3", udf((String a, Boolean b, Boolean c) -> "hello", DataTypes.StringType));
udfs.put(function.name + "5", udf((String a, String b, String c, Boolean d, Boolean e) -> "world", DataTypes.StringType));
UserDefinedFunction udf = (UserDefinedFunction)udfs.get(function.name + seq.length());
if (udf != null) {
tableDataSet = tableDataSet.withColumn(column + "_", udf.apply(seq));
}
tableDataSet.explain(true);
tableDataSet.show(5);
错误信息 :
引起:java.lang.RuntimeException:在 [outpatient_visit_id#0,outpatient_no#1,patient_id#2,dom_hospital_no#3,outpatient_visit_count#4,cdt_visit_doctor#5,cdt_visit_doctor_id#6,cdt_visit_department#7 中找不到 visit_datetime#161, cdt_visit_dept_speciality#8,cdt_visit_dept_code#9,rstd_visit_dept_name#10,rstd_visit_dept_code#11,rstd_visit_speciality#12,cdt_visit_type#13,visit_datetime#14,clinic_document_id#15,患者年龄#16,cdt_fee_type#17,cdt_fee_type#17,cdt_19,status 20,registered_dept_code#21,registered_speciality#22,rstd_regist_dept_name#23,rstd_regist_dept_code#24,rstd_regist_speciality#25,selected_doctor#26,selected_doctor_id#27,time_of_register#28,triage_time#29,tirage_nurse#30,triage_du_mapping_id32,#source yidu_register_status#33,yidu_visit_type#34,yidu_data_credibility#35,first_or_further_visit#36,visit_dept_code#37,clinic_type#38]
== 物理计划 ==!Project [trim(outpatient_visit_id#0, None) AS outpatient_visit_id#361, trim(outpatient_no#1, None) AS outpatient_no#401, trim(patient_id#2, None) AS patient_id#441, trim(dom_hospital_no#3, None) AS dom_hospital_no#481, trim(outpatient_visit_count#4, None) AS outpatient_visit_count#521, trim(cdt_visit_doctor#5, None) AS cdt_visit_doctor#561, trim(cdt_visit_doctor_id#6, None) AS cdt_visit_doctor_id#601, trim(cdt_visit_department#7,无)作为 cdt_visit_department#641,修剪(cdt_visit_dept_speciality#8,无)作为 cdt_visit_dept_speciality#681,修剪(cdt_visit_dept_code#9,无)作为 cdt_visit_dept_code#721,修剪(rstd_visit_dept_name#10,无)作为 rstd_visit_dept_name_761,修剪11,无)AS rstd_visit_dept_code#801,修剪(rstd_visit_speciality#12,无)AS rstd_visit_speciality#841,修剪(cdt_visit_type#13,无)AS cdt_visit_type#881,trim(UDF(visit_datetime#14, false, true), None) AS visit_datetime#921, trim(clinic_document_id#15, None) AS Clinic_document_id#961, trim(UDF(patient_age#16, visit_datetime#161,birth_date#201, false , true), None) AS patient_age#1001, trim(cdt_fee_type#17, None) AS cdt_fee_type#1041, trim(cdt_register_status#18, None) AS cdt_register_status#1081, trim(UDF(birth_date#19, false, true),无)作为出生日期#1121,修剪(注册部门#20,无)作为注册部门#1161,修剪(注册部门代码#21,无)作为注册部门代码#1201,修剪(注册专业#22,无)作为注册专业#1241,修剪(rstd_regist_dept_name# 23,无)AS rstd_regist_dept_name#1281,... 15 个更多字段]visit_datetime#161,birth_date#201, false, true), None) AS patient_age#1001, trim(cdt_fee_type#17, None) AS cdt_fee_type#1041, trim(cdt_register_status#18, None) AS cdt_register_status#1081, trim(UDF( birth_date#19, false, true), None) ASbirth_date#1121, trim(registered_dept#20, None) AS registered_dept#1161, trim(registered_dept_code#21, None) AS registered_dept_code#1201, trim(registered_speciality#22, None) AS registered_speciality#1241, trim(rstd_regist_dept_name#23, None) AS rstd_regist_dept_name#1281, ... 还有 15 个字段]visit_datetime#161,birth_date#201, false, true), None) AS patient_age#1001, trim(cdt_fee_type#17, None) AS cdt_fee_type#1041, trim(cdt_register_status#18, None) AS cdt_register_status#1081, trim(UDF( birth_date#19, false, true), None) ASbirth_date#1121, trim(registered_dept#20, None) AS registered_dept#1161, trim(registered_dept_code#21, None) AS registered_dept_code#1201, trim(registered_speciality#22, None) AS registered_speciality#1241, trim(rstd_regist_dept_name#23, None) AS rstd_regist_dept_name#1281, ... 还有 15 个字段]无)AS registered_dept_code#1201, trim(registered_speciality#22, None) AS registered_speciality#1241, trim(rstd_regist_dept_name#23, None) AS rstd_regist_dept_name#1281, ... 还有 15 个字段]无)AS registered_dept_code#1201, trim(registered_speciality#22, None) AS registered_speciality#1241, trim(rstd_regist_dept_name#23, None) AS rstd_regist_dept_name#1281, ... 还有 15 个字段]
解决方案
推荐阅读
- reactjs - 如何只访问一次 React Redux 值?
- sql - 将 JSON 数组数据添加到临时表或真实表中
- javascript - 使用多个 CSS 网格 - 使用两个网格但希望它们都从页面顶部开始
- angular - Angular - http 拦截器 - http 速率限制器 - 滑动窗口
- sql - 使用 sequelize 处理竞争条件容易出错的代码
- flutter - PopupMenuButton 菜单总是与屏幕的一侧有间隙
- r - 在 R markdown 中调整绘图比例
- c# - 将 appsettings.json 映射到类
- c# - AJAX 方法未发布到 Web 方法
- javascript - 将多个参数传递给 Vuex 动作