'Insert SparkSession DataFrame' 在 DSX 中自动将数据从整数转换为浮点数
'Insert SparkSession DataFrame' automatically converting data from integer to float in DSX
我有一个 csv 文件,我使用 "SparkSession DataFrame" 将其插入 IBM Data Science Experience。 csv文件中的所有内容(headers除外)都是整数。
数据框通过某些机器学习模型按预期工作,直到尝试创建线性回归分类时出现此错误:
TypeError: Cannot cast array data from dtype('float64') to dtype('U32') according to the rule 'safe'
我认为这意味着数据不再是整数,而是被视为浮点数。
我该如何解决这个问题?导入文件时是否可以执行任何操作以确保它保持为整数?请参阅下面的示例,其中我尝试添加第二个格式选项。
`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)))
我有一个 csv 文件,我使用 "SparkSession DataFrame" 将其插入 IBM Data Science Experience。 csv文件中的所有内容(headers除外)都是整数。
数据框通过某些机器学习模型按预期工作,直到尝试创建线性回归分类时出现此错误:
TypeError: Cannot cast array data from dtype('float64') to dtype('U32') according to the rule 'safe'
我认为这意味着数据不再是整数,而是被视为浮点数。
我该如何解决这个问题?导入文件时是否可以执行任何操作以确保它保持为整数?请参阅下面的示例,其中我尝试添加第二个格式选项。
`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)))