小编Mor*_*tz 的帖子

Pyspark:从 JSON 文件创建模式

我正在处理来自很长的嵌套 JSON 文件的数据。问题是,这些文件的结构并不总是相同,因为其中一些文件缺少其他文件的列。我想从包含所有列的空 JSON 文件创建自定义架构。如果我稍后将 JSON 文件读入这个预定义的架构中,则不存在的列将填充空值(至少是计划)。到目前为止我做了什么:

  1. 将测试 JSON(不包含所有预期的列)加载到数据框中
  2. 将其架构写入 JSON 文件
  3. 在文本编辑器中打开此 JSON 文件并手动添加缺少的列

接下来我想做的是通过将 JSON 文件读入我的代码来创建一个新模式,但我对合成很困难。我可以直接从文件本身读取架构吗?我努力了

schemaFromJson = StructType.fromJson(json.loads('filepath/spark-schema.json'))
Run Code Online (Sandbox Code Playgroud)

但它给了我 TypeError: init () 缺少 2 个必需的位置参数:'doc' 和 'pos'

知道我当前的代码有什么问题吗?多谢

编辑:我遇到了这个链接sparkbyexamples.com/pyspark/pyspark-structtype-and-structfield。第 7 章几乎描述了我遇到的问题。我只是不明白如何解析我手动增强为 schemaFromJson = StructType.fromJson(json.loads(schema.json)) 的 json 文件。

当我做:

jsonDF = spark.read.json(filesToLoad)
schema = jsonDF.schema.json()
schemaNew = StructType.fromJson(json.loads(schema))
jsonDF2 = spark.read.schema(schemaNew).json(filesToLoad)
Run Code Online (Sandbox Code Playgroud)

代码运行完毕,但显然没有用,因为 jsonDF 和 jsonDF2 确实具有相同的内容/架构。我想要实现的目标是向“schema”添加一些列,然后这些列将反映在“schemaNew”中。

jsonschema apache-spark-sql pyspark

5
推荐指数
1
解决办法
3万
查看次数

Javascript reduce()仅考虑2个数组元素

我想获得某个阵列中所有“戏剧”电影的平均收视率。所以我的计划是1.)做一些“过滤器”功能以获取包含所有“戏剧”电影的数组2.)做“减少”功能,该函数累加所有等级并将返回值除以“戏剧”的长度“数组。

但是第一步是有效的,但是当我尝试使用“ reduce”函数时,每当我的“ Drama”数组包含两个以上元素时,它将返回NaN。如果我用2个元素对其进行测试,那么它将起作用。我真的很困惑,由于某些原因,第三个元素的“比率”不再被视为数字值。

任何帮助表示赞赏,在此先感谢!

var movies = [{
    title: 'Fargo',
    year: '1994',
    director: 'Frank Darabont',
    duration: '2h 52min',
    genre: ['Drama'],
    rate: '7.78'
  },
  {
    title: 'Terminator',
    year: '1994',
    director: 'Frank Darabont',
    duration: '2h 52min',
    genre: ['Drama', 'Crime'],
    rate: '9.36'
  },
  {
    title: 'The Shawshank Redemption',
    year: '1994',
    director: 'Frank Darabont',
    duration: '2h 52min',
    genre: ['Drama'],
    rate: '8.5'
  },
  {
    title: 'Titanic',
    year: '1994',
    director: 'Frank Darabont',
    duration: '2h 52min',
    genre: ['Romance'],
    rate: '2.5'
  }
]

function dramaMoviesRate(arr) {
  let …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

1
推荐指数
1
解决办法
32
查看次数