我正在尝试将csv文件读取到数据帧中。因为我知道我的csv文件,所以我知道我的数据帧的模式应该是什么。此外,我正在使用spark csv包读取文件。我试图指定如下模式。
val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("schema","project: string ,article: string ,requests: integer ,bytes_served: long")
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")
但是当我检查我创建的数据框架的模式时,它似乎已经采取了自己的模式。我做错了什么吗?如何制作火花来拾取我提到的模式?
> pagecount.printSchema
root
|-- _c0: string (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
|-- _c3: string (nullable = true)
我在分析中使用了Arunakiran Nulu提供的解决方案(参见代码)。尽管它能够为列指定正确的类型,但返回的所有值都是null。之前,我尝试过使用选项。选项(“inferSchema”,“true”)
并在数据帧中返回正确的值(尽管类型不同)。
val customSchema = StructType(Array(
StructField("numicu", StringType, true),
StructField("fecha_solicitud", TimestampType, true),
StructField("codtecnica", StringType, true),
StructField("tecnica", StringType, true),
StructField("finexploracion", TimestampType, true),
StructField("ultimavalidacioninforme", TimestampType, true),
StructField("validador", StringType, true)))
val df_explo = spark.read
.format("csv")
.option("header", "true")
.option("delimiter", "\t")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss")
.schema(customSchema)
.load(filename)
结果
root
|-- numicu: string (nullable = true)
|-- fecha_solicitud: timestamp (nullable = true)
|-- codtecnica: string (nullable = true)
|-- tecnica: string (nullable = true)
|-- finexploracion: timestamp (nullable = true)
|-- ultimavalidacioninforme: timestamp (nullable = true)
|-- validador: string (nullable = true)
表为:
|numicu|fecha_solicitud|codtecnica|tecnica|finexploracion|ultimavalidacioninforme|validador|
+------+---------------+----------+-------+--------------+-----------------------+---------+
| null| null| null| null| null| null| null|
| null| null| null| null| null| null| null|
| null| null| null| null| null| null| null|
| null| null| null| null| null| null| null|
对于那些有兴趣在Python中执行此操作的人,这里有一个工作版本。
customSchema = StructType([
StructField("IDGC", StringType(), True),
StructField("SEARCHNAME", StringType(), True),
StructField("PRICE", DoubleType(), True)
])
productDF = spark.read.load('/home/ForTesting/testProduct.csv', format="csv", header="true", sep='|', schema=customSchema)
testProduct.csv
ID|SEARCHNAME|PRICE
6607|EFKTON75LIN|890.88
6612|EFKTON100HEN|55.66
希望这有帮助。
请尝试以下代码,无需指定架构。当您将inferSchema设置为true时,它应该从csv文件中获取。
val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("header", "true")
.option("inferSchema", "true")
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")
如果要手动指定架构,可以按以下方式执行:
import org.apache.spark.sql.types._
val customSchema = StructType(Array(
StructField("project", StringType, true),
StructField("article", StringType, true),
StructField("requests", IntegerType, true),
StructField("bytes_served", DoubleType, true))
)
val pagecount = sqlContext.read.format("csv")
.option("delimiter"," ").option("quote","")
.option("header", "true")
.schema(customSchema)
.load("dbfs:/databricks-datasets/wikipedia-datasets/data-001/pagecounts/sample/pagecounts-20151124-170000")
我试图解压缩一个csv文件并将其传递给熊猫,这样我就可以处理这个文件了。 到目前为止,我尝试的代码是: 在最后一行之后,尽管python能够获取该文件,但在错误的末尾我得到了一个“不存在”。 有人能告诉我我做错了什么吗?
我想在spark中读取一个CSV,将其转换为DataFrame,并使用将其存储在HDFS中 在Apache Spark中将CSV文件加载为DataFrame的正确命令是什么?
问题内容: 我正在从包含以下数据的CSV文件(xyz.CSV)中读取数据: 当我使用循环对其进行迭代时,我可以按以下代码逐行打印数据,并且仅打印column1数据。 通过上面的代码,我只能得到第一列。 如果我尝试打印line [1]或line [2],则会出现以下错误。 请建议打印列2或列3的数据。 问题答案: 这是我获得第二列和第三列的方法: 结果如下:
我得到了一个CSV文件和一个头文件,它必须通过Spark(2.0.0和Scala2.11.8)作为数据frame读取。 是否有任何方法可以使用spark代码仅从CSV头中转义特殊字符?
这是我在大学的一个项目,一切似乎都很好,除了游戏课,它初始化了游戏。下面是一个片段 之后是一些getter和我要实现的4个方法。这些方法是、、、 我创建了,以便它在此处返回String[]的数组列表: 然后,我想加载一些攻击、敌人和龙,并将它们插入相应的数组列表中。 我在此处应用了: 我这样写它,它接受从返回的ArrayList,并使用开关在ArrayList中的每个String[]中搜索第一个字
我希望我的Spark应用程序(Scala)能够读取S3文件 在我的开发机器上,我可以使用awscli访问S3文件在或中预先配置的配置文件,例如: 但是当尝试从Spark读取这些文件时,使用作为env变量提供的aws_配置文件(aws_配置文件),我得到了以下错误: DoesBucket存在于我的bucket名称中:com.amazonaws.AmazonClientException:BasicA