'Insert SparkSession DataFrame' DSX 中自动将数据从整数转换为浮点数



我有一个CSV文件,我使用" SparkSession DataFrame"将其插入IBM数据科学体验。CSV文件中的所有内容(标题除外)都是整数。

数据帧按预期运行,但通过某些机器学习模型,直到尝试创建一个我获得此错误的线性回归分类:

TypeError:无法根据规则'SAFE'

将数组数据从dtype('float64')施加到dtype('u32')

我相信这意味着数据不再是整数,并且被视为浮点。

如何解决这个问题?当您导入文件以确保其作为整数保持时,该如何执行任何操作?请参阅下面的示例,我尝试添加第二个格式选项。

`from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.read
  .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')
  .option('header', 'true')
  .option('format', 'int32')
  .load(bmos.url('name', 'name.csv'))
df.take(5)`

@charles-gomes是正确的。这是一个完整的示例,其中我的文件tinyinttest.csv位于一个名为TestingSandbox的对象存储器中。tinyinttest.csv的内容为:

name,val
a,1
b,2

代码:

from pyspark.sql import SparkSession
import ibmos2spark
credentials = {
    'auth_url': 'https://identity.open.softlayer.com',
    'project_id': 'xxx',
    'region': 'xxx',
    'user_id': 'xxx',
    'username': 'xxx',
    'password': 'xxx'
}
configuration_name = 'xxx'
bmos = ibmos2spark.bluemix(sc, credentials, configuration_name)
spark = SparkSession.builder.getOrCreate()
df = spark.read
  .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')
  .option('header', 'true')
  .option('inferSchema', 'true')
  .load(bmos.url('TestingSandbox', 'tinyinttest.csv'))
df.schema

输出:

StructType(List(StructField(name,StringType,true),StructField(val,IntegerType,true)))

相关内容

  • 没有找到相关文章

最新更新