Scala将Json文件读取为Json
我希望将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
有什么想法吗?我尝试使用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