code: def save_dataframe(self, dataframe):
          
          storepath = self.temporary_object_path(str(uuid.uuid4()))
  
          # switch parquet lib
          parqlib = self.get_parquet_lib()
          if isinstance(dataframe, pd.DataFrame):
              #parqlib is ParquetLib.ARROW: # other parquet libs are deprecated, remove?
              import pyarrow as pa
              from pyarrow import parquet
              table = pa.Table.from_pandas(dataframe)
              parquet.write_table(table, storepath)
          elif parqlib is ParquetLib.SPARK:
              from pyspark import sql as sparksql
              assert isinstance(dataframe, sparksql.DataFrame)
              dataframe.write.parquet(storepath)
          else:
              assert False, "Unimplemented ParquetLib %s" % parqlib
  
          # Move serialized DataFrame to object store
          if os.path.isdir(storepath): # Pyspark
              hashes = []
              files = [ofile for ofile in os.listdir(storepath) if ofile.endswith(".parquet")]
              for obj in files:
                  path = os.path.join(storepath, obj)
                  objhash = digest_file(path)
                  self._move_to_store(path, objhash)
                  hashes.append(objhash)
              rmtree(storepath)
          else:
              filehash = digest_file(storepath)
              self._move_to_store(storepath, filehash)
              hashes = [filehash]
  
          return hashes
docs: Save a DataFrame to the store.