pyspark模式生成器

tinsel的Python项目详细描述


您的数据是您的模式

https://img.shields.io/pypi/pyversions/tinsel.svghttps://img.shields.io/pypi/v/tinsel.svghttps://coveralls.io/repos/github/Orhideous/tinsel/badge.svg?branch=masterhttps://img.shields.io/travis/Orhideous/tinsel.svghttps://pyup.io/repos/github/Orhideous/tinsel/shield.svg 这个微型图书馆有助于克服手写星火的过度复杂性。 数据帧架构。

怎么做?

将数据塑造为NamedTuple或数据类-它们可以自由混合:

from dataclasses import dataclass
from tinsel import struct, transform
from typing import NamedTuple, Optional, Dict, List

@struct
@dataclass
class UserInfo:
    hobby: List[str]
    last_seen: Optional[int]
    pet_ages: Dict[str, int]


@struct
class User(NamedTuple):
    login: str
    age: int
    active: bool
    info: Optional[UserInfo]

将根节点(User在本例中)转换为模式:

schema = transform(User)

如有必要,创建一些数据:

data = [
    User(
        login="Ben",
        age=18,
        active=False,
        info=None
    ),
    User(
        login="Tom",
        age=32,
        active=True,
        info=UserInfo(
            hobby=["pets", "flowers"],
            last_seen=16,
            pet_ages={"Jack": 2, "Sunshine": 6}
        )
    )
]

还有……喂!:

from pyspark.sql import SparkSession

sc = SparkSession.builder.master('local').getOrCreate()

df = sc.createDataFrame(data=data, schema=schema)
df.printSchema()
df.show(truncate=False)

这将输出:

root
 |-- login: string (nullable = false)
 |-- age: integer (nullable = false)
 |-- active: boolean (nullable = false)
 |-- info: struct (nullable = true)
 |    |-- hobby: array (nullable = false)
 |    |    |-- element: string (containsNull = false)
 |    |-- last_seen: integer (nullable = true)
 |    |-- pet_ages: map (nullable = false)
 |    |    |-- key: string
 |    |    |-- value: integer (valueContainsNull = false)


+-----+---+------+----------------------------------------------+
|login|age|active|info                                          |
+-----+---+------+----------------------------------------------+
|Ben  |18 |false |null                                          |
|Tom  |32 |true  |[[pets, flowers],, [Jack -> 2, Sunshine -> 6]]|
+-----+---+------+----------------------------------------------+

功能

  • 使用本机python类型;没有额外的dsl,没有神秘的api-只是简单的python;
  • 小巧快捷;
  • 为python中缺少的某些类型提供类型垫片,例如longshort
  • 可空字段自然适合模式定义;

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史

0.2.0(2018-08-28)

  • 添加了数据类支持

0.1.0(2018-08-28)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?