邏輯和物理計劃如何工作時讀蜂巢分割槽表在獸人pyspark dataframe嗎
我已經建立了一個火花dataframe閱讀csv hdfs的位置。
emp_df = spark.read.format("com.databricks.spark.csv") \ .option("mode", "DROPMALFORMED") \ .option("header", "true") \ .option("inferschema", "true") \ .option("delimiter", ",").load(PATH_TO_FILE)
並儲存這個dataframe蜂巢paritioned獸人使用partitionBy方法表
emp_df.repartition(5, 'emp_id').write.format('orc').partitionBy("emp_id").saveAsTable("UDB.temptable")
當我閱讀此表如下方法如果我看看邏輯和物理計劃,似乎它已經完全過濾的資料使用分割槽鍵列:
emp_df_1 = spark.sql("select * from UDB.temptable where emp_id ='6'")emp_df_1.explain(True)***************************************************************************== Parsed Logical Plan =='Project [*] +- 'Filter ('emp_id = 6) +- 'UnresolvedRelation `UDB`.`temptable`== Analyzed Logical Plan ==emp_name: string, emp_city: string, emp_salary: int, emp_id: intProject [emp_name#7399, emp_city#7400, emp_salary#7401, emp_id#7402]+- Filter (emp_id#7402 = cast(6 as int)) +- SubqueryAlias temptable +- Relation[emp_name#7399,emp_city#7400,emp_salary#7401,emp_id#7402] orc== Optimized Logical Plan ==Filter (isnotnull(emp_id#7402) && (emp_id#7402 = 6))+- Relation[emp_name#7399,emp_city#7400,emp_salary#7401,emp_id#7402] orc== Physical Plan ==*(1) FileScan orc udb.temptable[emp_name#7399,emp_city#7400,emp_salary#7401,emp_id#7402] Batched: true, Format: ORC, Location: PrunedInMemoryFileIndex[hdfs://pathlocation/database/udb...., PartitionCount: 1, PartitionFilters: [isnotnull(emp_id#7402), (emp_id#7402 = 6)], PushedFilters: [], ReadSchema: struct<emp_name:string,emp_city:string,emp_salary:int>***************************************************************************
而如果我讀這個dataframe透過絕對hdfs路徑位置,似乎不能夠過濾資料使用分割槽鍵列:
emp_df_2 = spark.read.format("orc").load("hdfs://pathlocation/database/udb.db/temptable/emp_id=6")emp_df_2.explain(True)******************************************************************************== Parsed Logical Plan ==Relation[emp_name#7411,emp_city#7412,emp_salary#7413] orc== Analyzed Logical Plan ==emp_name: string, emp_city: string, emp_salary: intRelation[emp_name#7411,emp_city#7412,emp_salary#7413] orc== Optimized Logical Plan ==Relation[emp_name#7411,emp_city#7412,emp_salary#7413] orc== Physical Plan ==*(1) FileScan orc [emp_name#7411,emp_city#7412,emp_salary#7413] Batched: true, Format: ORC, Location: InMemoryFileIndex[hdfs://pathlocation/data/database/udb.db/tem..., PartitionFilters: [], PushedFilters: [], ReadSchema: struct<emp_name:string,emp_city:string,emp_salary:int>********************************************************************************
你能幫我瞭解邏輯和物理計劃的情況下?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559515/viewspace-2222178/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ENGINEER01 - 分割槽規劃和使用,LVM邏輯卷LVM
- 在Oracle中,什麼是物理讀和邏輯讀?Oracle
- Linux下的磁碟分割槽和邏輯卷Linux
- oracle分割槽表和分割槽表exchangeOracle
- 淺析Win10系統主分割槽和邏輯分割槽的區別Win10
- oracle分割槽表和非分割槽表exchangeOracle
- linux 磁碟分割槽掛載-LVM-物理卷PV,卷組VG,邏輯卷LVLinuxLVM
- Linux硬碟掛載與磁碟分割槽基礎(二)(物理卷、卷組、邏輯卷)Linux硬碟
- 【pyspark】dataframe常用操作Spark
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 移動分割槽表和分割槽索引的表空間索引
- linux系統下分割槽邏輯卷擴容Linux
- win10系統下將邏輯分割槽改為主分割槽的方法Win10
- PySpark DataFrame教程與演示Spark
- PySpark筆記(三):DataFrameSpark筆記
- 如何在 Linux 分割槽或邏輯卷中建立檔案系統Linux
- 增加表分割槽時,為local分割槽索引指定不同表空間的方法索引
- linux 磁碟自動化分割槽掛載-LVM-物理卷PV,卷組VG,邏輯卷LV-shellLinuxLVM
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- PG的非分割槽表線上轉分割槽表
- Linux擴容後,邏輯分割槽大小與檔案大小不符Linux
- 教程:如何使用DataLakeAnalytics建立分割槽表
- 【MYSQL】 分割槽表MySql
- hive 分割槽表和分桶表區別Hive
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- hive分割槽和分桶你熟悉嗎?Hive
- 一個具有邏輯和物理檢視的ER模型設計工具模型
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- 什麼是物理畫素和邏輯畫素?
- 達夢DM備份恢復(物理和邏輯)
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- ORACLE刪除-表分割槽和資料Oracle
- MySql分表、分庫、分片和分割槽MySql
- 如何使用Data Lake Analytics建立分割槽表
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- PostgreSQL 原始碼解讀(98)- 分割槽表#4(資料查詢路由#1-“擴充套件”分割槽表)SQL原始碼路由套件