Buckets:
| import{s as Ua,n as ka,o as Ia}from"../chunks/scheduler.d75c11ed.js";import{S as ba,i as $a,e as p,s as l,c as o,h as _a,a as r,d as t,b as n,f as wa,g as c,j as i,k as ia,l as Ca,m as e,n as h,t as u,o as d,p as f}from"../chunks/index.4ec9dfe9.js";import{C as Ra,H as ra,E as Fa}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.9a52dede.js";import{C as ma}from"../chunks/CodeBlock.37bede1d.js";function Da(oa){let m,Y,Z,W,M,x,g,S,J,ca='This document is a quick introduction to using 🤗 Datasets with Spark, with a particular focus on how to load a Spark DataFrame into a <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Dataset">Dataset</a> object.',z,T,ha="From there, you have fast access to any element and you can use it as a data loader to train models.",B,j,E,w,ua=`A <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Dataset">Dataset</a> object is a wrapper of an Arrow table, which allows fast reads from arrays in the dataset to PyTorch, TensorFlow and JAX tensors. | |
| The Arrow table is memory mapped from disk, which can load datasets bigger than your available RAM.`,X,U,da='You can get a <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Dataset">Dataset</a> from a Spark DataFrame using <code>Dataset.from_spark()</code>:',L,k,H,I,fa='The Spark workers write the dataset on disk in a cache directory as Arrow files, and the <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Dataset">Dataset</a> is loaded from there.',N,b,ya='Alternatively, you can skip materialization by using <code>IterableDataset.from_spark()</code>, which returns an <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.IterableDataset">IterableDataset</a>:',V,$,A,_,P,C,Ma=`When using <code>Dataset.from_spark()</code>, the resulting <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Dataset">Dataset</a> is cached; if you call <code>Dataset.from_spark()</code> multiple | |
| times on the same DataFrame it won’t re-run the Spark job that writes the dataset as Arrow files on disk.`,K,R,ga=`You can set the cache location by passing <code>cache_dir=</code> to <code>Dataset.from_spark()</code>. | |
| Make sure to use a disk that is available to both your workers and your current machine (the driver).`,O,y,Ja='<p>In a different session, a Spark DataFrame doesn’t have the same <a href="https://spark.apache.org/docs/3.2.0/api/python/reference/api/pyspark.sql.DataFrame.semanticHash.html" rel="nofollow">semantic hash</a>, and it will rerun a Spark job and store it in a new cache.</p>',aa,F,sa,D,Ta=`If your dataset is made of images, audio data or N-dimensional arrays, you can specify the <code>features=</code> argument in | |
| <code>Dataset.from_spark()</code> (or <code>IterableDataset.from_spark()</code>):`,ta,Q,ea,q,ja='You can check the <a href="/docs/datasets/pr_8213/en/package_reference/main_classes#datasets.Features">Features</a> documentation to know about all the feature types available.',la,G,na,v,pa;return M=new Ra({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new ra({props:{title:"Use with Spark",local:"use-with-spark",headingTag:"h1"}}),j=new ra({props:{title:"Load from Spark",local:"load-from-spark",headingTag:"h2"}}),k=new ma({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwRGF0YXNldCUwQWRmJTIwJTNEJTIwc3BhcmsuY3JlYXRlRGF0YUZyYW1lKCUwQSUyMCUyMCUyMCUyMGRhdGElM0QlNUIlNUIxJTJDJTIwJTIyRWxpYSUyMiU1RCUyQyUyMCU1QjIlMkMlMjAlMjJUZW8lMjIlNUQlMkMlMjAlNUIzJTJDJTIwJTIyRmFuZyUyMiU1RCU1RCUyQyUwQSUyMCUyMCUyMCUyMGNvbHVtbnMlM0QlNUIlMjJpZCUyMiUyQyUyMCUyMm5hbWUlMjIlNUQlMkMlMEEpJTBBZHMlMjAlM0QlMjBEYXRhc2V0LmZyb21fc3BhcmsoZGYp",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Dataset | |
| <span class="hljs-meta">>>> </span>df = spark.createDataFrame( | |
| <span class="hljs-meta">... </span> data=[[<span class="hljs-number">1</span>, <span class="hljs-string">"Elia"</span>], [<span class="hljs-number">2</span>, <span class="hljs-string">"Teo"</span>], [<span class="hljs-number">3</span>, <span class="hljs-string">"Fang"</span>]], | |
| <span class="hljs-meta">... </span> columns=[<span class="hljs-string">"id"</span>, <span class="hljs-string">"name"</span>], | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>ds = Dataset.from_spark(df)`,lang:"py",wrap:!1}}),$=new ma({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwSXRlcmFibGVEYXRhc2V0JTBBZGYlMjAlM0QlMjBzcGFyay5jcmVhdGVEYXRhRnJhbWUoJTBBJTIwJTIwJTIwJTIwZGF0YSUzRCU1QiU1QjElMkMlMjAlMjJFbGlhJTIyJTVEJTJDJTIwJTVCMiUyQyUyMCUyMlRlbyUyMiU1RCUyQyUyMCU1QjMlMkMlMjAlMjJGYW5nJTIyJTVEJTVEJTJDJTBBJTIwJTIwJTIwJTIwY29sdW1ucyUzRCU1QiUyMmlkJTIyJTJDJTIwJTIybmFtZSUyMiU1RCUyQyUwQSklMEFkcyUyMCUzRCUyMEl0ZXJhYmxlRGF0YXNldC5mcm9tX3NwYXJrKGRmKSUwQXByaW50KG5leHQoaXRlcihkcykpKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> IterableDataset | |
| <span class="hljs-meta">>>> </span>df = spark.createDataFrame( | |
| <span class="hljs-meta">... </span> data=[[<span class="hljs-number">1</span>, <span class="hljs-string">"Elia"</span>], [<span class="hljs-number">2</span>, <span class="hljs-string">"Teo"</span>], [<span class="hljs-number">3</span>, <span class="hljs-string">"Fang"</span>]], | |
| <span class="hljs-meta">... </span> columns=[<span class="hljs-string">"id"</span>, <span class="hljs-string">"name"</span>], | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>ds = IterableDataset.from_spark(df) | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(<span class="hljs-built_in">next</span>(<span class="hljs-built_in">iter</span>(ds))) | |
| {<span class="hljs-string">"id"</span>: <span class="hljs-number">1</span>, <span class="hljs-string">"name"</span>: <span class="hljs-string">"Elia"</span>}`,lang:"py",wrap:!1}}),_=new ra({props:{title:"Caching",local:"caching",headingTag:"h3"}}),F=new ra({props:{title:"Feature types",local:"feature-types",headingTag:"h3"}}),Q=new ma({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwRGF0YXNldCUyQyUyMEZlYXR1cmVzJTJDJTIwSW1hZ2UlMkMlMjBWYWx1ZSUwQWRhdGElMjAlM0QlMjAlNUIoMCUyQyUyMG9wZW4oJTIyaW1hZ2UucG5nJTIyJTJDJTIwJTIycmIlMjIpLnJlYWQoKSklNUQlMEFkZiUyMCUzRCUyMHNwYXJrLmNyZWF0ZURhdGFGcmFtZShkYXRhJTJDJTIwJTIyaWR4JTNBJTIwaW50JTJDJTIwaW1hZ2UlM0ElMjBiaW5hcnklMjIpJTBBJTIzJTIwQWxzbyUyMHdvcmtzJTIwaWYlMjB5b3UlMjBoYXZlJTIwYXJyYXlzJTBBJTIzJTIwZGF0YSUyMCUzRCUyMCU1QigwJTJDJTIwbnAuemVyb3Moc2hhcGUlM0QoMzIlMkMlMjAzMiUyQyUyMDMpJTJDJTIwZHR5cGUlM0RucC5pbnQzMikudG9saXN0KCkpJTVEJTBBJTIzJTIwZGYlMjAlM0QlMjBzcGFyay5jcmVhdGVEYXRhRnJhbWUoZGF0YSUyQyUyMCUyMmlkeCUzQSUyMGludCUyQyUyMGltYWdlJTNBJTIwYXJyYXklM0NhcnJheSUzQ2FycmF5JTNDaW50JTNFJTNFJTNFJTIyKSUwQWZlYXR1cmVzJTIwJTNEJTIwRmVhdHVyZXMoJTdCJTIyaWR4JTIyJTNBJTIwVmFsdWUoJTIyaW50NjQlMjIpJTJDJTIwJTIyaW1hZ2UlMjIlM0ElMjBJbWFnZSgpJTdEKSUwQWRhdGFzZXQlMjAlM0QlMjBEYXRhc2V0LmZyb21fc3BhcmsoZGYlMkMlMjBmZWF0dXJlcyUzRGZlYXR1cmVzKSUwQWRhdGFzZXQlNUIwJTVE",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Dataset, Features, Image, Value | |
| <span class="hljs-meta">>>> </span>data = [(<span class="hljs-number">0</span>, <span class="hljs-built_in">open</span>(<span class="hljs-string">"image.png"</span>, <span class="hljs-string">"rb"</span>).read())] | |
| <span class="hljs-meta">>>> </span>df = spark.createDataFrame(data, <span class="hljs-string">"idx: int, image: binary"</span>) | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># Also works if you have arrays</span> | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># data = [(0, np.zeros(shape=(32, 32, 3), dtype=np.int32).tolist())]</span> | |
| <span class="hljs-meta">>>> </span><span class="hljs-comment"># df = spark.createDataFrame(data, "idx: int, image: array<array<array<int>>>")</span> | |
| <span class="hljs-meta">>>> </span>features = Features({<span class="hljs-string">"idx"</span>: Value(<span class="hljs-string">"int64"</span>), <span class="hljs-string">"image"</span>: Image()}) | |
| <span class="hljs-meta">>>> </span>dataset = Dataset.from_spark(df, features=features) | |
| <span class="hljs-meta">>>> </span>dataset[<span class="hljs-number">0</span>] | |
| {<span class="hljs-string">'idx'</span>: <span class="hljs-number">0</span>, <span class="hljs-string">'image'</span>: <PIL.PngImagePlugin.PngImageFile image mode=RGB size=32x32>}`,lang:"py",wrap:!1}}),G=new Fa({props:{source:"https://github.com/huggingface/datasets/blob/main/docs/source/use_with_spark.mdx"}}),{c(){m=p("meta"),Y=l(),Z=p("p"),W=l(),o(M.$$.fragment),x=l(),o(g.$$.fragment),S=l(),J=p("p"),J.innerHTML=ca,z=l(),T=p("p"),T.textContent=ha,B=l(),o(j.$$.fragment),E=l(),w=p("p"),w.innerHTML=ua,X=l(),U=p("p"),U.innerHTML=da,L=l(),o(k.$$.fragment),H=l(),I=p("p"),I.innerHTML=fa,N=l(),b=p("p"),b.innerHTML=ya,V=l(),o($.$$.fragment),A=l(),o(_.$$.fragment),P=l(),C=p("p"),C.innerHTML=Ma,K=l(),R=p("p"),R.innerHTML=ga,O=l(),y=p("blockquote"),y.innerHTML=Ja,aa=l(),o(F.$$.fragment),sa=l(),D=p("p"),D.innerHTML=Ta,ta=l(),o(Q.$$.fragment),ea=l(),q=p("p"),q.innerHTML=ja,la=l(),o(G.$$.fragment),na=l(),v=p("p"),this.h()},l(a){const s=_a("svelte-u9bgzb",document.head);m=r(s,"META",{name:!0,content:!0}),s.forEach(t),Y=n(a),Z=r(a,"P",{}),wa(Z).forEach(t),W=n(a),c(M.$$.fragment,a),x=n(a),c(g.$$.fragment,a),S=n(a),J=r(a,"P",{"data-svelte-h":!0}),i(J)!=="svelte-186ui0d"&&(J.innerHTML=ca),z=n(a),T=r(a,"P",{"data-svelte-h":!0}),i(T)!=="svelte-1pvlf1d"&&(T.textContent=ha),B=n(a),c(j.$$.fragment,a),E=n(a),w=r(a,"P",{"data-svelte-h":!0}),i(w)!=="svelte-124iwjf"&&(w.innerHTML=ua),X=n(a),U=r(a,"P",{"data-svelte-h":!0}),i(U)!=="svelte-8j7i"&&(U.innerHTML=da),L=n(a),c(k.$$.fragment,a),H=n(a),I=r(a,"P",{"data-svelte-h":!0}),i(I)!=="svelte-jewixu"&&(I.innerHTML=fa),N=n(a),b=r(a,"P",{"data-svelte-h":!0}),i(b)!=="svelte-l4hof8"&&(b.innerHTML=ya),V=n(a),c($.$$.fragment,a),A=n(a),c(_.$$.fragment,a),P=n(a),C=r(a,"P",{"data-svelte-h":!0}),i(C)!=="svelte-ofv2sr"&&(C.innerHTML=Ma),K=n(a),R=r(a,"P",{"data-svelte-h":!0}),i(R)!=="svelte-n6wfk7"&&(R.innerHTML=ga),O=n(a),y=r(a,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),i(y)!=="svelte-hb8r4o"&&(y.innerHTML=Ja),aa=n(a),c(F.$$.fragment,a),sa=n(a),D=r(a,"P",{"data-svelte-h":!0}),i(D)!=="svelte-9b4dmt"&&(D.innerHTML=Ta),ta=n(a),c(Q.$$.fragment,a),ea=n(a),q=r(a,"P",{"data-svelte-h":!0}),i(q)!=="svelte-1i4w2gm"&&(q.innerHTML=ja),la=n(a),c(G.$$.fragment,a),na=n(a),v=r(a,"P",{}),wa(v).forEach(t),this.h()},h(){ia(m,"name","hf:doc:metadata"),ia(m,"content",Qa),ia(y,"class","warning")},m(a,s){Ca(document.head,m),e(a,Y,s),e(a,Z,s),e(a,W,s),h(M,a,s),e(a,x,s),h(g,a,s),e(a,S,s),e(a,J,s),e(a,z,s),e(a,T,s),e(a,B,s),h(j,a,s),e(a,E,s),e(a,w,s),e(a,X,s),e(a,U,s),e(a,L,s),h(k,a,s),e(a,H,s),e(a,I,s),e(a,N,s),e(a,b,s),e(a,V,s),h($,a,s),e(a,A,s),h(_,a,s),e(a,P,s),e(a,C,s),e(a,K,s),e(a,R,s),e(a,O,s),e(a,y,s),e(a,aa,s),h(F,a,s),e(a,sa,s),e(a,D,s),e(a,ta,s),h(Q,a,s),e(a,ea,s),e(a,q,s),e(a,la,s),h(G,a,s),e(a,na,s),e(a,v,s),pa=!0},p:ka,i(a){pa||(u(M.$$.fragment,a),u(g.$$.fragment,a),u(j.$$.fragment,a),u(k.$$.fragment,a),u($.$$.fragment,a),u(_.$$.fragment,a),u(F.$$.fragment,a),u(Q.$$.fragment,a),u(G.$$.fragment,a),pa=!0)},o(a){d(M.$$.fragment,a),d(g.$$.fragment,a),d(j.$$.fragment,a),d(k.$$.fragment,a),d($.$$.fragment,a),d(_.$$.fragment,a),d(F.$$.fragment,a),d(Q.$$.fragment,a),d(G.$$.fragment,a),pa=!1},d(a){a&&(t(Y),t(Z),t(W),t(x),t(S),t(J),t(z),t(T),t(B),t(E),t(w),t(X),t(U),t(L),t(H),t(I),t(N),t(b),t(V),t(A),t(P),t(C),t(K),t(R),t(O),t(y),t(aa),t(sa),t(D),t(ta),t(ea),t(q),t(la),t(na),t(v)),t(m),f(M,a),f(g,a),f(j,a),f(k,a),f($,a),f(_,a),f(F,a),f(Q,a),f(G,a)}}}const Qa='{"title":"Use with Spark","local":"use-with-spark","sections":[{"title":"Load from Spark","local":"load-from-spark","sections":[{"title":"Caching","local":"caching","sections":[],"depth":3},{"title":"Feature types","local":"feature-types","sections":[],"depth":3}],"depth":2}],"depth":1}';function qa(oa){return Ia(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Wa extends ba{constructor(m){super(),$a(this,m,qa,Da,Ua,{})}}export{Wa as component}; | |
Xet Storage Details
- Size:
- 12.6 kB
- Xet hash:
- 6122a3aacf36842e575cc9d340275416c5133503f1568014217efd96856bc5e6
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.