我正在尝试使用spark_csv包读取pyspark中的tsv文件。我的火花版本是 1.6.3。在我的数据集中,两列具有相同的名称。我使用以下代码来读取数据。
temp=sqlContext.read.load(data_file,
format='com.databricks.spark.csv',
header='true',
delimiter='t',
mode='FAILFAST',
codec="org.apache.hadoop.io.compress.GzipCodec").cache()
当我使用上面的代码阅读时,我得到以下异常:
pyspark.sql.utils.IllegalArgumentException: u"The header contains a duplicate entry: 'member_id' in [member_status, md5_hash_email, member_id, first_name, last_name, email_daily_double, email_personal_coupon_reminder, email_personal_shopping_offers, email_site_wide_sales, email_hot_deals_daily_newsletter, is_referral, traffic_source, traffic_source_type, traffic_source_subtype, signup_date_id, email_domain_group, first_order_date, first_shopping_date, is_mobile, is_tablet, is_pc, first_order_id, member_engaged, last_visit_date, last_order_date, last_shopping_date, total_order_amount, total_commission_amount, total_rebate_amount, total_cash_payments, number_of_cash_payments, life_cycle_stage, total_orders, member_id]"
所以,我想知道是否有办法在开始之前删除重复列。我知道我可以事先指定架构。但我希望它是动态的,以便我可以在运行时处理任何架构。谢谢
这在最新版本的 Spark 中已修复 - https://issues.apache.org/jira/browse/SPARK-16896
如果无法升级,则必须自己构造标头。