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

问题描述 投票:0回答:1

我有一个csv文件,我使用“SparkSession DataFrame”插入到IBM Data Science Experience。 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)`
spark-dataframe data-science-experience
1个回答
0
投票

@ charles-gomes是对的。这是一个完整的例子,我的文件tinyinttest.csv位于一个名为TestingSandbox的objectstore容器中。 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)))
© www.soinside.com 2019 - 2024. All rights reserved.