Apache spark pySpark DataFrame FloatType(),文件以unicode格式输入

Apache spark pySpark DataFrame FloatType(),文件以unicode格式输入,apache-spark,dataframe,pyspark,Apache Spark,Dataframe,Pyspark,您好,我有以下模式: [StructField(record_id,StringType,true), StructField(offer_id,FloatType,true)] 我要导入的文件是unicode格式的。 对于sc.textFiles,将unicode设置为false仍然会导致字符串错误。我的问题是,在我将数据加载到数据帧之前,我是否必须清理它(在说它是FloatType之前将unicode转换为float) 做这件事最有效的方法是什么,尤其是当我将场的规模扩大到1000时 在不

您好,我有以下模式:

[StructField(record_id,StringType,true), StructField(offer_id,FloatType,true)]
我要导入的文件是unicode格式的。 对于sc.textFiles,将unicode设置为false仍然会导致字符串错误。我的问题是,在我将数据加载到数据帧之前,我是否必须清理它(在说它是FloatType之前将unicode转换为float)

做这件事最有效的方法是什么,尤其是当我将场的规模扩大到1000时

  • 在不相关的数据类型之间进行隐式转换不是一种好的做法。因此(几乎)没有任何系统可以帮助您自动进行转换。是的,您必须告诉系统,并且系统将接受您在将来承担失败的风险(如果字符串字段突然包含“abc”,会发生什么情况?)
  • 您应该在sc.textfile和createDataFrame之间使用映射函数作为转换层,或者应用模式步骤。所有纠正数据类型的转换都应该在那里进行
  • 如果有1000个字段,则可能需要实现推断模式机制,并获取一些数据样本以确定要使用的模式,然后将其应用于整个数据
  • (假设火花1.3.1释放)