手动创建 pyspark 数据框

2024-01-04

我正在尝试根据某些数据手动创建 pyspark 数据框:

row_in = [(1566429545575348), (40.353977), (-111.701859)]
rdd = sc.parallelize(row_in)
schema = StructType(
    [
        StructField("time_epocs", DecimalType(), True),
        StructField("lat", DecimalType(), True),
        StructField("long", DecimalType(), True),
    ]
)
df_in_test = spark.createDataFrame(rdd, schema)

当我尝试显示数据框时,这会出现错误,因此我不确定如何执行此操作。

但是,那Spark文档 https://spark.apache.org/docs/2.4.7/api/python/pyspark.sql.html#pyspark.sql.SQLContext.createDataFrame对我来说似乎有点复杂,当我尝试遵循这些说明时,我遇到了类似的错误。

有谁知道如何做到这一点?


简单的数据框创建:

df = spark.createDataFrame(
    [
        (1, "foo"),  # create your data here, be consistent in the types.
        (2, "bar"),
    ],
    ["id", "label"]  # add your column names here
)

df.printSchema()
root
 |-- id: long (nullable = true)
 |-- label: string (nullable = true)

df.show()
+---+-----+                                                                     
| id|label|
+---+-----+
|  1|  foo|
|  2|  bar|
+---+-----+

根据官方文档 https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.SparkSession.createDataFrame:

  • 当模式是列名列表时,将从数据推断每列的类型。(上面的例子↑)
  • 当架构为pyspark.sql.types.DataType或数据类型字符串,它必须与真实数据匹配。(示例如下↓)
# Example with a datatype string
df = spark.createDataFrame(
    [
        (1, "foo"),  # Add your data here
        (2, "bar"),
    ],  
    "id int, label string",  # add column names and types here
)

# Example with pyspark.sql.types
from pyspark.sql import types as T
df = spark.createDataFrame(
    [
        (1, "foo"),  # Add your data here
        (2, "bar"),
    ],
    T.StructType(  # Define the whole schema within a StructType
        [
            T.StructField("id", T.IntegerType(), True),
            T.StructField("label", T.StringType(), True),
        ]
    ),
)


df.printSchema()
root
 |-- id: integer (nullable = true)  # type is forced to Int
 |-- label: string (nullable = true)

此外,您可以从 Pandas 数据框创建数据框,架构将从 Pandas 数据框的类型推断:

import pandas as pd
import numpy as np


pdf = pd.DataFrame(
    {
        "col1": [np.random.randint(10) for x in range(10)],
        "col2": [np.random.randint(100) for x in range(10)],
    }
)


df = spark.createDataFrame(pdf)

df.show()
+----+----+
|col1|col2|
+----+----+
|   6|   4|
|   1|  39|
|   7|   4|
|   7|  95|
|   6|   3|
|   7|  28|
|   2|  26|
|   0|   4|
|   4|  32|
+----+----+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手动创建 pyspark 数据框 的相关文章

随机推荐

  • Android:带有 FragmentTabHost 的底部选项卡

    我试图将 FragmentTabHost 放在屏幕底部 不久前 我能够使用常规 TabHost 做到这一点 如下这个线程 https stackoverflow com questions 2395661 android tabs at t
  • +1 和 -1 之间的差异

    gt t 1 1 Num a gt a gt a gt t 1 1 Num a gt a 为什么第二个不是函数 我必须写吗 1 或者 还有更好的方法 这是因为 1 然而被解释为消极的 1 被解释为柯里化函数 x gt 1 x 在哈斯克尔中
  • 如何将 Visual Studio 附加到尚未启动的进程?

    我的 NET 程序由于某些原因无法从 Visual Studio 运行 从 Excel 2010 模板项目创建的 Excel 文件 我需要调试启动事件 如果我想调试程序初始化后发生的事件 那么没有问题 我从资源管理器运行该程序 将进程附加到
  • 如何在Android-ndk中将变量内容输出到“LogCat”窗口

    我在 Eclipse ADT 环境中使用 Android sdk ndk 在Android sdk Java开发中 我可以使用 Log i Log w 语句将消息和变量内容输出到 LogCat 窗口 然而 在Android ndk C C
  • 创建按字母顺序索引的列表 (ColdFusion + Microsoft SQL Server)

    我目前正在努力寻找知道如何做到这一点的人 我尝试了几种不同的方法 最终得到了一半的结果 但并不完全是我想要的 基本上我正在尝试创建一个显示所有乐队 A Z 的列表 但乐队名称是从数据库中调用的 所以我必须在嵌套列表中使用 band name
  • 如何验证“Cache-Control”、“无缓存、无存储、必须重新验证”

    我正在学习缓存以及如何管理它 当我打开网站页面时 我可以看到图像 css 文件 js 文件等静态内容存储在临时文件夹中 但现在 当我在响应标头中添加这些属性时 我看不到缓存行为的任何变化 所有内容都像以前一样被存储 即使我在 js 文件中进
  • Thymeleaf:我可以在表达式中使用消息吗

    我在 Spring Boot 应用程序中使用 Thymeleaf 3 目前 我想在 EL 表达式 Spring EL 中使用消息表达式 第一个用例 修剪消息 data title message key trim 第二个用例 有条件地创建一
  • 如何停止工作表中的程序执行?

    如何在 Scala 工作表中停止程序执行 如果代码正在执行并且不返回 无限循环 那么似乎不可能在不重新启动 Eclipse 的情况下停止程序执行 From https github com scala ide scala worksheet
  • 如何在 Linux 中终止单个 TCP 连接?

    我有一个进程在不同的端口上打开到多个浏览器的多个 tcp 连接 使用 netsat 的输出是这样的 tcp 0 0 server1 something myprog client1 something 49987 ESTABLISHED t
  • jQuery DataTables - 启动缓慢,“正常”html 表显示在开头

    我正在使用 jQuery DataTable 插件 但我担心脚本加载似乎需要一些时间 所以我的网页总是首先显示普通的 html 表格 在所有脚本完成后 该表格将变成 DataTable 我觉得这种样子不太能接受 所以希望能在这里得到一些建议
  • 在 IOS 上启用语音时,移动菜单无法打开

    我正在使用 Safari 浏览器在 ios 中打开我的网站 移动菜单工作正常 当我点击菜单图标 三行图标 时它会打开 但是 当我启用语音然后进入浏览器并点击该菜单图标时 移动菜单未打开 这是CSS问题还是我必须添加一些aria属性 有人能帮
  • 将全局变量传递给类和函数的替代方法

    我是 python 新手 我一直在使用global将变量传递给其他函数被认为是新手 也是一种不好的做法 我想不再使用全局变量 但我不知道该怎么做 现在 我有一个在 wxPython 中创建的 UI 作为其自己的单独类 并且我有另一个从 in
  • 当我序列化对象时出现 StackOverflowError

    我想用这个方法序列化一个对象 public void serializ CRDT m throws IOException ByteArrayOutputStream byteOutput new ByteArrayOutputStream
  • std::vector 在不知道元素类型的情况下插入

    假设我有一个接受各种向量的模板化函数 但由于各种原因我不能在模板参数中提及这一点 这就是我想要做的 在特定位置插入一个新的默认构造元素 而不知道其类型 template
  • 使用 sm.OLS 时需要添加常量吗?

    我正在对两组数据 Y 和 X 执行 OLS 我使用 statsmodel api OLS 然而 无论我之前是否向 X 添加常量 我发现一些非常不同的结果 这是代码 import statsmodels api as sm import nu
  • RestructedText 文件中可能存在文本的私有部分吗?

    我正在将公司的一些文档从 md 转换为 rst 以便在 ReadTheDocs com 中显示 其中一些文档中的内部部分不适合我们的客户使用 有没有办法标记这些部分 以便 Sphinx 不会将其呈现为 HTML Use the ifconf
  • 单击按钮时发出警报并将用户移动到打开的新选项卡

    我创建了一个带有链接的按钮 该链接在新选项卡中打开 我还使用了 javascript 来发出警报 目前这段代码运行完美 但是在 警报 中单击 确定 后 用户仍停留在同一页面上 但我想将用户移至新打开的选项卡 是否可以 我的代码是
  • strtok调用时出现问题

    我有一个像这样使用 strtok 的函数 void f1 char name char tmp tmp strtok names while tmp tmp strtok NULL 我有一个电话 f1 abc def 问题是在第一次调用中
  • 无法实例化名为 ADBannerView 的类

    我试图在我的应用程序底部插入 iad 横幅 但在遵循教程后不断出现错误 代码如下 interface DMKHomeViewController UIViewcontroller
  • 手动创建 pyspark 数据框

    我正在尝试根据某些数据手动创建 pyspark 数据框 row in 1566429545575348 40 353977 111 701859 rdd sc parallelize row in schema StructType Str