-1

我正在尝试使用 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]"

所以,我想知道是否有办法在开始之前删除重复的列。我知道我可以事先指定模式。但我希望它是动态的,以便我可以在运行时处理任何模式。谢谢

4

1 回答 1

0

这已在最新版本的 spark 中得到修复 - https://issues.apache.org/jira/browse/SPARK-16896

如果无法升级,则必须自己构建标头。

于 2017-11-15T23:21:10.780 回答