我尝试创建一个独立的PySpark程序,它读取csv并将其存储在hive表中.我在配置Spark会话,会议和上下文对象时遇到问题.这是我的代码:
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext, SparkSession
from pyspark.sql.types import *
conf = SparkConf().setAppName("test_import")
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
spark = SparkSession.builder.config(conf=conf)
dfRaw = spark.read.csv("hdfs:/user/..../test.csv",header=False)
dfRaw.createOrReplaceTempView('tempTable')
sqlContext.sql("create table customer.temp as select * from tempTable")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
dfRaw = spark.read.csv("hdfs:/ user /../ test.csv",header = False)AttributeError:'Builder'对象没有属性'read'
为了使用read.csv命令,哪种配置spark会话对象的正确方法?另外,有人可以解释Session,Context和Conderence对象之间的差异吗?
python apache-spark apache-spark-sql pyspark apache-spark-2.0
我想用JavaScript和GoJS创建一个ER(实体关系图).当鼠标悬停在节点上方以显示包含每个节点的一些信息的文本时,我也想要.我试着用这个例子,这是我的代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ER diagram</title>
<meta name="description" content="Interactive entity-relationship diagram or data model diagram implemented by GoJS in JavaScript for HTML." />
<!-- Copyright 1998-2018 by Northwoods Software Corporation. -->
<meta charset="UTF-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/gojs/1.8.10/go-debug.js"></script>
<script id="code">
function init() {
var $ = go.GraphObject.make; // for conciseness in defining templates
myDiagram =
$(go.Diagram, "myDiagramDiv", // must name or refer to the DIV HTML element
{
initialContentAlignment: go.Spot.Left,
allowDelete: false,
allowCopy: false, …Run Code Online (Sandbox Code Playgroud)我需要查找 hdfs 目录中文件或文件夹的创建日期。例如:
hadoop fs -ls /user/myUser/
Run Code Online (Sandbox Code Playgroud)
我得到路径 /user/myUser/ 中的文件和目录列表以及修改日期。我想找到每个条目的创建日期。
我正在尝试为nba数据创建一个web scrapper.当我运行以下代码时:
import requests
response = requests.get('https://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=10%2F20%2F2017&DateTo=10%2F20%2F2017&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight=')
Run Code Online (Sandbox Code Playgroud)
请求超时错误:
文件"C:\ ProgramData\Anaconda3\lib\site-packages\requests\api.py",第70行,获取返回请求('get',url,params = params,**kwargs)
文件"C:\ ProgramData\Anaconda3\lib\site-packages\requests\api.py",第56行,请求返回session.request(method = method,url = url,**kwargs)
文件"C:\ ProgramData\Anaconda3\lib\site-packages\requests\sessions.py",第488行,请求resp = self.send(prep,**send_kwargs)
文件"C:\ ProgramData\Anaconda3\lib\site-packages\requests\sessions.py",第609行,在send r = adapter.send(request,**kwargs)
文件"C:\ ProgramData\Anaconda3\lib\site-packages\requests\adapters.py",第473行,发送引发ConnectionError(错误,请求=请求)
ConnectionError :('Connection aborted.',OSError("(10060,'WSAETIMEDOUT')",))
但是,当我在浏览器中点击相同的URL时,我收到了响应.
我在熊猫中有一个数据框,例如:
0 1 2
([0.8898668778942382 0.89533945283595] 0)
([1.2632564814188714 1.0207660696232244] 0)
([1.006649166957976 1.1180973832359227] 0)
([0.9653632916751714 0.8625538463644129] 0)
([1.038366333873932 0.9091449796555554] 0)
Run Code Online (Sandbox Code Playgroud)
所有值都是字符串。我想删除所有特殊字符并转换为双精度。我想应用一个函数来删除所有特殊字符,除了点像
import re
re.sub('[^0-9.]+', '',x)
Run Code Online (Sandbox Code Playgroud)
所以我想在数据帧的所有单元格中应用它。我该怎么做?我找到了 df.applymap 函数,但我不知道如何将字符串作为参数传递。我试过
def remSp(x):
re.sub('^[0-9]+', '',x)
df.applymap(remSp())
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将单元格传递给函数。有没有更好的方法来做到这一点?
谢谢
我有一个 PySpark DataFrame
Col1 Col2 Col3
0.1 0.2 0.3
Run Code Online (Sandbox Code Playgroud)
我想获取至少一行满足条件的列名,例如一行大于 0.1
在这种情况下,我的预期结果应该是:
[Co2 , Co3]
Run Code Online (Sandbox Code Playgroud)
我无法提供任何代码,因为我真的不知道该怎么做。
我有两个大型Hive表,我想将它们与spark.sql连接。假设我们有表1和表2,表1中有500万行,表2中有7000万行。表是活泼的格式,并作为拼花文件存储在Hive中。
我想加入它们,并对某些列进行一些汇总,可以说计算所有行和一列的平均值(例如doubleColumn),同时使用两个条件进行过滤(在col1,col2上说)。
注意:我在一台机器上进行测试安装(虽然功能很强大)。我希望集群中的性能可能会有所不同。
我的第一次尝试是使用spark sql像这样:
val stat = sqlContext.sql("select count(id), avg(doubleColumn) " +
" FROM db.table1 as t1 JOIN db.table2 " +
" ON t1.id = t2.id " +
" WHERE col1 = val1 AND col2 = val2").collect
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使我为每个执行程序和驱动程序提供至少8 GB的内存,运行时间也只有大约5分钟,非常差。我还尝试使用数据帧语法,并尝试首先过滤行并仅选择特定的列以具有更好的选择性,例如:
//Filter first and select only needed column
val df = spark.sql("SELECT * FROM db.tab1")
val tab1= df.filter($"col1" === "val1" && $"col2" === "val2").select("id")
val tab2= spark.sql("SELECT id, doubleColumn FROM db.tab2")
val joined = tab1.as("d1").join(tab2.as("d2"), $"d1.id" === $"d2.id")
//Take the …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想在每个Window分区中提供ID。例如我有
id | col |
1 | a |
2 | a |
3 | b |
4 | c |
5 | c |
Run Code Online (Sandbox Code Playgroud)
所以我想要(基于与列col分组)
id | group |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 3 |
Run Code Online (Sandbox Code Playgroud)
我想使用窗口函数,但是无论如何我都找不到为每个窗口分配ID的方法。我需要类似的东西:
w = Window().partitionBy('col')
df = df.withColumn("group", id().over(w))
Run Code Online (Sandbox Code Playgroud)
有什么办法可以达到这样的目标吗?(我不能简单地将col用作组ID,因为我有兴趣在多个列上创建一个窗口)
我想在x = '23:30:00'处显示一条垂直线.我也试过x = '23:30'.有任何想法吗?
df1 = df1.between_time('19:30','23:59')
df1['high'].plot(kind='line',figsize = (10,5))
plt.axvline(x='23:30:00', color = 'r')
plt.show()
Run Code Online (Sandbox Code Playgroud)
python ×6
apache-spark ×4
dataframe ×3
pyspark ×3
pandas ×2
gojs ×1
hadoop ×1
hdfs ×1
hive ×1
html ×1
javascript ×1
matplotlib ×1
mousehover ×1
python-3.x ×1
regex ×1
user-agent ×1
web-scraping ×1