中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

公司做外貿(mào)的網(wǎng)站網(wǎng)站免費制作平臺

公司做外貿(mào)的網(wǎng)站,網(wǎng)站免費制作平臺,網(wǎng)絡(luò)廣告營銷實現(xiàn)方式解讀,深圳工信部網(wǎng)站SparkSQL 定義UDF函數(shù) 方式1語法: udf對象 sparksession.udf.register(參數(shù)1,參數(shù)2,參數(shù)3) 參數(shù)1:UDF名稱,可用于SQL風(fēng)格 參數(shù)2:被注冊成UDF的方法名 參數(shù)3:聲明UDF的返回值類型 ud…

SparkSQL 定義UDF函數(shù)

8e9d7ddcc2f04a4fa3d0b7e78921b4f8.png

21cc4f7f05aa4c4d8e9db15c1d271cb1.png

方式1語法:
udf對象 = sparksession.udf.register(參數(shù)1,參數(shù)2,參數(shù)3)
參數(shù)1:UDF名稱,可用于SQL風(fēng)格
參數(shù)2:被注冊成UDF的方法名
參數(shù)3:聲明UDF的返回值類型
udf對象: 返回值對象,是一個UDF對象,可用于DSL風(fēng)格
方式2語法:
udf對象 = F.udf(參數(shù)1, 參數(shù)2)
參數(shù)1:被注冊成UDF的方法名
參數(shù)2:聲明UDF的返回值類型
udf對象: 返回值對象,是一個UDF對象,可用于DSL風(fēng)格
其中F是:
from pyspark.sql import functions as F
其中,被注冊成UDF的方法名是指具體的計算方法,如:
def add(x, y): x + y
add就是將要被注冊成UDF的方法名

8dee25a8da254eec809eb0c8a5d95baf.png??

# coding:utf8
import timefrom pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StringType, IntegerType
import pandas as pd
from pyspark.sql import functions as Fif __name__ == '__main__':# 0. 構(gòu)建執(zhí)行環(huán)境入口對象SparkSessionspark = SparkSession.builder.\appName("test").\master("local[*]").\config("spark.sql.shuffle.partitions", 2).\getOrCreate()sc = spark.sparkContext# 構(gòu)建一個RDDrdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7]).map(lambda x:[x])df = rdd.toDF(["num"])# TODO 1: 方式1 sparksession.udf.register(), DSL和SQL風(fēng)格均可以使用# UDF的處理函數(shù)def num_ride_10(num):return num * 10# 參數(shù)1: 注冊的UDF的名稱, 這個udf名稱, 僅可以用于 SQL風(fēng)格# 參數(shù)2: UDF的處理邏輯, 是一個單獨的方法# 參數(shù)3: 聲明UDF的返回值類型, 注意: UDF注冊時候, 必須聲明返回值類型, 并且UDF的真實返回值一定要和聲明的返回值一致# 返回值對象: 這是一個UDF對象, 僅可以用于 DSL 語法# 當(dāng)前這種方式定義的UDF, 可以通過參數(shù)1的名稱用于SQL風(fēng)格, 通過返回值對象用戶DSL風(fēng)格udf2 = spark.udf.register("udf1", num_ride_10, IntegerType())# SQL風(fēng)格中使用# selectExpr 以SELECT的表達式執(zhí)行, 表達式 SQL風(fēng)格的表達式(字符串)# select方法, 接受普通的字符串字段名, 或者返回值是Column對象的計算df.selectExpr("udf1(num)").show()# DSL 風(fēng)格中使用# 返回值UDF對象 如果作為方法使用, 傳入的參數(shù) 一定是Column對象df.select(udf2(df['num'])).show()# TODO 2: 方式2注冊, 僅能用于DSL風(fēng)格udf3 = F.udf(num_ride_10, IntegerType())df.select(udf3(df['num'])).show()df.selectExpr("udf3(num)").show()

2562d46c19ee47c3b20f47fea545fb36.png

af9b0504fc474fd8896cb20f93094922.png?

# coding:utf8
import timefrom pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StringType, IntegerType, ArrayType
import pandas as pd
from pyspark.sql import functions as Fif __name__ == '__main__':# 0. 構(gòu)建執(zhí)行環(huán)境入口對象SparkSessionspark = SparkSession.builder.\appName("test").\master("local[*]").\config("spark.sql.shuffle.partitions", 2).\getOrCreate()sc = spark.sparkContext# 構(gòu)建一個RDDrdd = sc.parallelize([["hadoop spark flink"], ["hadoop flink java"]])df = rdd.toDF(["line"])# 注冊UDF, UDF的執(zhí)行函數(shù)定義def split_line(data):return data.split(" ")  # 返回值是一個Array對象# TODO1 方式1 構(gòu)建UDFudf2 = spark.udf.register("udf1", split_line, ArrayType(StringType()))# DLS風(fēng)格df.select(udf2(df['line'])).show()# SQL風(fēng)格df.createTempView("lines")spark.sql("SELECT udf1(line) FROM lines").show(truncate=False)# TODO 2 方式2的形式構(gòu)建UDFudf3 = F.udf(split_line, ArrayType(StringType()))df.select(udf3(df['line'])).show(truncate=False)

0e2c268c421848cfbc639a80fc067838.png

fe0861021c4d4be5a8b0566697bf5905.png?

# coding:utf8
import string
import timefrom pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StringType, IntegerType, ArrayType
import pandas as pd
from pyspark.sql import functions as Fif __name__ == '__main__':# 0. 構(gòu)建執(zhí)行環(huán)境入口對象SparkSessionspark = SparkSession.builder.\appName("test").\master("local[*]").\config("spark.sql.shuffle.partitions", 2).\getOrCreate()sc = spark.sparkContext# 假設(shè) 有三個數(shù)字  1 2 3  我們傳入數(shù)字 ,返回數(shù)字所在序號對應(yīng)的 字母 然后和數(shù)字結(jié)合形成dict返回# 比如傳入1 我們返回 {"num":1, "letters": "a"}rdd = sc.parallelize([[1], [2], [3]])df = rdd.toDF(["num"])# 注冊UDFdef process(data):return {"num": data, "letters": string.ascii_letters[data]}"""UDF的返回值是字典的話, 需要用StructType來接收"""udf1 = spark.udf.register("udf1", process, StructType().add("num", IntegerType(), nullable=True).\add("letters", StringType(), nullable=True))df.selectExpr("udf1(num)").show(truncate=False)df.select(udf1(df['num'])).show(truncate=False)

2034e0d567664867a1c76c153620c99e.png??

c5a05c06e0c24009abe4b20cdc81ed7e.png

?SparkSQL 使用窗口函數(shù)

f3cf9802e8084fc4bf2518765b500397.png

7d43ea9fba3c479094ff69bb62cd99da.png

# coding:utf8
# 演示sparksql 窗口函數(shù)(開窗函數(shù))
import string
from pyspark.sql import SparkSession
# 導(dǎo)入StructType對象
from pyspark.sql.types import ArrayType, StringType, StructType, IntegerType
import pandas as pd
from pyspark.sql import functions as Fif __name__ == '__main__':spark = SparkSession.builder. \appName("create df"). \master("local[*]"). \config("spark.sql.shuffle.partitions", "2"). \getOrCreate()
sc = spark.sparkContext
rdd = sc.parallelize([('張三', 'class_1', 99),('王五', 'class_2', 35),('王三', 'class_3', 57),('王久', 'class_4', 12),('王麗', 'class_5', 99),('王娟', 'class_1', 90),('王軍', 'class_2', 91),('王俊', 'class_3', 33),('王君', 'class_4', 55),('王珺', 'class_5', 66),('鄭穎', 'class_1', 11),('鄭輝', 'class_2', 33),('張麗', 'class_3', 36),('張張', 'class_4', 79),('黃凱', 'class_5', 90),('黃開', 'class_1', 90),('黃愷', 'class_2', 90),('王凱', 'class_3', 11),('王凱杰', 'class_1', 11),('王開杰', 'class_2', 3),('王景亮', 'class_3', 99)
])
schema = StructType().add("name", StringType()). \add("class", StringType()). \add("score", IntegerType())
df = rdd.toDF(schema)
# 窗口函數(shù)只用于SQL風(fēng)格, 所以注冊表先
df.createTempView("stu")
# TODO 聚合窗口
spark.sql("""
SELECT *, AVG(score) OVER() AS avg_score FROM stu
""").show()
# SELECT *, AVG(score) OVER() AS avg_score FROM stu 等同于
# SELECT * FROM stu
# SELECT AVG(score) FROM stu
# 兩個SQL的結(jié)果集進行整合而來
spark.sql("""
SELECT *, AVG(score) OVER(PARTITION BY class) AS avg_score FROM stu
""").show()
# SELECT *, AVG(score) OVER(PARTITION BY class) AS avg_score FROM stu 等同于
# SELECT * FROM stu
# SELECT AVG(score) FROM stu GROUP BY class
# 兩個SQL的結(jié)果集進行整合而來
# TODO 排序窗口
spark.sql("""
SELECT *, ROW_NUMBER() OVER(ORDER BY score DESC) AS row_number_rank, 
DENSE_RANK() OVER(PARTITION BY class ORDER BY score DESC) AS dense_rank, 
RANK() OVER(ORDER BY score) AS rank
FROM stu
""").show()
# TODO NTILE
spark.sql("""
SELECT *, NTILE(6) OVER(ORDER BY score DESC) FROM stu
""").show()

SparkSQL支持UDF和UDAF定義,但在Python中,暫時只能定義UDF
UDF定義支持2種方式, 1:使用SparkSession對象構(gòu)建. 2: 使用functions包中提供的UDF API構(gòu)建. 要注意, 方式1可用DSL和SQL風(fēng)格, 方式2 僅可用于DSL風(fēng)格
SparkSQL支持窗口函數(shù)使用, 常用SQL中的窗口函數(shù)均支持, 如聚合窗口\排序窗口\NTILE分組窗口等

?

http://m.risenshineclean.com/news/59440.html

相關(guān)文章:

  • 正規(guī)的錦州網(wǎng)站建設(shè)東莞百度seo推廣公司
  • 做網(wǎng)站思路sem競價培訓(xùn)
  • 靜態(tài)網(wǎng)站怎么做優(yōu)化平臺優(yōu)化是指什么
  • 廣州網(wǎng)站建設(shè)星珀泰安網(wǎng)站推廣優(yōu)化
  • 深圳樂安居網(wǎng)站誰做的北京網(wǎng)站推廣營銷服務(wù)電話
  • 邢臺建設(shè)網(wǎng)站如何做百度關(guān)鍵詞推廣
  • 微網(wǎng)站促銷版cps推廣
  • 石家莊做商城網(wǎng)站的公司網(wǎng)站點擊量與排名
  • 自己做網(wǎng)站流程有道搜索引擎入口
  • 吉林市網(wǎng)站推廣百度宣傳推廣費用
  • 織夢網(wǎng)站 聯(lián)系方式修改今天的病毒感染情況
  • 湖北住房和城鄉(xiāng)建設(shè)部網(wǎng)站直接下載app
  • 網(wǎng)站備案在外地怎樣創(chuàng)建網(wǎng)站平臺
  • 兩學(xué)一做注冊網(wǎng)站嗎網(wǎng)絡(luò)廣告有哪些形式
  • 平面設(shè)計比較好的網(wǎng)站廣告投放平臺系統(tǒng)
  • 金色世紀做網(wǎng)站的是哪個崗位發(fā)布推廣信息的網(wǎng)站
  • 在縣城怎么做網(wǎng)站公司seo教程優(yōu)化
  • 做網(wǎng)站不打廣告怎么賺錢網(wǎng)絡(luò)營銷是什么工作
  • 公司微網(wǎng)站怎么建設(shè)廣州線上教學(xué)
  • 動易網(wǎng)站后臺密碼破解寧夏百度推廣代理商
  • 航達建設(shè)網(wǎng)站上海優(yōu)質(zhì)網(wǎng)站seo有哪些
  • 有沒有什么做統(tǒng)計的網(wǎng)站網(wǎng)絡(luò)營銷比較好的企業(yè)
  • 如何解決網(wǎng)站只收錄首頁的一些辦法小程序制作
  • cms網(wǎng)站地圖模板東莞搜索引擎推廣
  • 開淘寶店和做網(wǎng)站有什么區(qū)別福鼎網(wǎng)站優(yōu)化公司
  • 直接打域名訪問網(wǎng)站關(guān)鍵詞推廣工具
  • 網(wǎng)站制作設(shè)及的技術(shù)產(chǎn)品營銷策劃方案3000字
  • 廣州定制網(wǎng)站建設(shè)廣東seo網(wǎng)站推廣代運營
  • 成都網(wǎng)站開發(fā)哪個好深圳seo優(yōu)化排名
  • 嵌入式培訓(xùn)班多少錢seo優(yōu)化推廣軟件