Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala将Json文件读取为Json_Scala_Apache Spark - Fatal编程技术网

Scala将Json文件读取为Json

Scala将Json文件读取为Json,scala,apache-spark,Scala,Apache Spark,我希望将Json文件读取为Json而不进行解析。我不想使用数据帧,我只想将其作为常规文件读取,并且格式保持不变。 有什么想法吗?我尝试使用wholtextfile阅读,但这会创建一个df。我注意到您指定了apachespark标记,如果您的意思是香草scala,那么这个答案将不适用。使用这段代码,您可以得到一个RDD[String],它是分布式数据结构中最具文本风格的类型 // Where sc is your spark context > val textFile = sc.text

我希望将Json文件读取为Json而不进行解析。我不想使用数据帧,我只想将其作为常规文件读取,并且格式保持不变。
有什么想法吗?我尝试使用wholtextfile阅读,但这会创建一个df。

我注意到您指定了apachespark标记,如果您的意思是香草scala,那么这个答案将不适用。使用这段代码,您可以得到一个
RDD[String]
,它是分布式数据结构中最具文本风格的类型

// Where sc is your spark context

> val textFile = sc.textFile("myFile.json")
textFile: org.apache.spark.rdd.RDD[String]

由于您不接受特定于spark的答案,您可以尝试使用这样的普通scala解决方案(使用库):

该库是读取JSON文件的最简单的“纯Scala”方式:

val jsonString=os.read(os.pwd/“src”/“test”/“resources”/“phil.json”)
val data=ujson.read(jsonString)
data.value//LinkedHashMap(“名字”->Str(“菲尔”),“姓氏”->Str(“Hellmuth”),“出生年份”->Num(1964.0))
有关更多详细信息,请参阅

上面的代码片段用于从磁盘读取文件。如果您在集群环境中运行代码,可能需要使用不同的库。这取决于文件所在的位置和您的环境


避免使用其他Scala JSON库,因为它们很难使用。

可能重复,但rdd是JSON格式吗?我需要以Json格式阅读,我有点搞不清楚要问什么——这将以普通字符串的形式阅读(无需解析)。否则,像
spark.read.json()
这样的选项将把它放入一个我以为您希望避免的数据帧中。注意,这是使用SparkSessions APINo解析所需的,我需要Json文件提交到另一个需要Json输入的进程它是否需要Json文件的名称,如
my_file.Json
或格式为Json
{key:value,key1:value}
。我假设是后者,因为第一种方法与指定文件名一样简单。如果是后者,您可以尝试以下操作以获得结果
import scala.io.Source val fileContents:String=Source.fromFile(filename).getLines.mkString
import spray.json._

val source = scala.io.Source.fromFile("yourFile.txt")
val lines = try source.mkString finally source.close()
val yourJson = lines.parseJson